[学习笔记]将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)

原文地址:https://www.cnblogs.com/ybwang/p/1780004.html