我需要基于环境变量将Linq的连接字符串设置为Sql。我有一个函数,它将根据环境变量从web.config返回连接字符串,但是如何使Linq始终使用此“动态创建的”连接字符串(最好不必每次都指定它)?
我知道我可以使用构造函数指定连接字符串,但是在LinqDataSource中使用datacontext时如何工作?
最佳答案
用:
MyDataClassesDataContext db = new MyDataClassesDataContext(dynamicConnString);
对于LinqDataSource,请拦截ContextCreating事件并如上所述手动创建DataContext:
protected void LinqDataSource_ContextCreating(object sender, LinqDataSourceContextEventArgs e)
{
e.ObjectInstance = new MyDataClassesDataContext (dynamicConnString);
}
从MSDN:
默认情况下,LinqDataSource控件
创建一个类型的实例
在ContextTypeName中指定
属性。 LinqDataSource控件
调用的默认构造函数
数据上下文对象创建一个
对象的实例。有可能的
您必须使用非默认值
构造函数,否则您必须创建一个
与那个不同的物体
在ContextTypeName中指定
属性。在这种情况下,您必须
处理ContextCreating事件并
手动创建数据上下文
目的。
关于asp.net - Linq to Sql-根据环境变量动态设置连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1188962/