我在VS 2010(C#.Net 4.0)中使用Linq2Sql来处理我的数据库访问。这一切都很有效。
但是因为我的DataContext
位于我的Web应用程序(数据访问层)的单独层中,所以我将其配置为使用调用Web应用程序web.config
文件中的连接字符串。
最终结果需要对Linq2Sql设计器文件(DB.designer.cs
)进行一次更改,即覆盖第一个构造函数参数(默认情况下,在数据库连接字符串的字符串中)并将其替换为如下调用:
System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString
我目前似乎遇到的问题是,当我通过GUI设计器(拖放部分)更新设计器时,它会将此代码更改重置为硬编码连接字符串。
有人可以告诉我是否可以更改设置以防止此情况发生?或者我对部分课程做些什么?或者完全是另一种方式?
答案 0 :(得分:2)
这是partial methods派上用场的地方!值得庆幸的是,LINQ2SQL DataContext加载了几个非常有用的。
假设您的DataContext
在我的示例中名为AutosDataContext
。在DBML旁边创建一个新类,并将其命名为AutosDataContext
。然后按如下方式填写:
public partial class AutosDataContext
{
partial void OnCreated()
{
this.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString;
}
}
在实例化DataContext之后立即调用部分OnCreated
方法,并为您添加自定义连接字符串逻辑提供了理想的位置,而DBML设计人员在更新时不会在其上行走。