• [学习笔记]将LinqToSql的连接字符串写在配置文件中


    LinqToSql会把连接字符串散落地写在多个位置,并且编译后就固定不可更改了。

    于是带来了各种不方便。比如在一台机器上配置好的程序拿到另一台机器上,就不得不找出所有散落的连接字符串,然后一一修改才能跑起来。

    大家一定很希望在使用LinqToSql时也能从配置文件里读取连接字符串。

    下边的技巧让我们达成这个目的。

    1:在项目中添加一个LinqToSql类,假设名字为DataClasses1。

    image 

    于是.NET会自动生成一堆东西:

    image

    双击DataClasses1.dbml,打开设计页面,从ServerExpoloer窗口拖几张表到这个设计页面,保存一下。

    2:在DataClasses1.designer.cs文件中,找到DataClasses1DataContext的无参构造方法(它有许多构造方法,只找到无参的那个)。

    image

    将这个方法剪切掉。


    3:在项目中新加一个类,确保这个类和生成的DataContext类名相同,都叫DataClasses1DataContext。在这个类定义前边加上partial修饰符。


    4: 将刚刚剪切掉的方法复制到新添加的类中。修改base后边的参数为你的配置文件中的连接字符串。

    最后效果如下图。

    image

    5:如果你想要删除settings文件就删了吧,因为你下次往dbml里拖数据库类的时候它又会自动生成。


    6:进入dbml的设计界面,在空白处右键,点“属性”。在属性栏里将“连接”项设置为“无”。

    image

    经过以上六步之后,你的Linq将只通过配置文件中的连接字符串去连接数据库,而不去关心你的表示从什么地方拖过来的。

    每次往dbml里拖入新的类时,都记着重复一下步骤6.

    一切OK了从此LinqToSql也移动自如了~~

    当然,如果你不想这么麻烦,也可以用另一个办法:

    向ServerExplorer中添加数据库的时候,连接名用(local)\SQLEXPRESS,而不是(主机名)\SQLEXPRESS。

    入下图所示:

    image

    这样拿到别人机器上的时候,只要数据库不改名,原来的LingToSql照样能用。

    参考

    1:LINQ and Web Application Connection Strings

    2:  How to set the connection string in your LINQ dbml file dynamically (based on web.config)

  • 相关阅读:
    影评
    札记
    竞赛203
    竞赛201
    StopWatch的使用
    mysql:GROUP_CONCAT
    DispatcherServlet核心方法doDispatch解析
    class对象与实例对象
    mybatis与传统ORM框架的区别
    servlet容器中listener、filter、interceptor的启动顺序
  • 原文地址:https://www.cnblogs.com/ybwang/p/1780004.html
Copyright © 2020-2023  润新知