在运行时更改LINQ-to-SQL连接字符串

时间:2011-08-22 12:00:17

标签: c# linq linq-to-sql

我的应用程序广泛使用LINQ-to-SQL,现在要求应用程序能够在运行时切换它正在查看的数据库 - 所以基本上我希望能够选择连接我声明它时我的数据上下文的字符串。

有没有一种简单的方法可以做到这一点?

3 个答案:

答案 0 :(得分:12)

请致电:

DataContext context = new DataContext ("cxstring");

答案 1 :(得分:6)

您可以使用App.config存储连接字符串,然后使用它们填充下拉框或其他内容。然后在LINQ2SQL数据上下文的构造函数中使用选定的Connection字符串。

App Config:

<configuration>
  <connectionStrings>
    <add key="ConString1" connectionString="ConnectionStringGoesHere"/>
    <add key="ConString2" connectionString="ConnectionStringGoesHere"/>

  </connectionStrings>

使用ConfigurationManager类访问连接字符串。

string conString = ConfigurationManager.ConnectionStrings["ConString1"].ConnectionString;

您也可以枚举它们或将它们设置为数据源以填充下拉框。

然后简单地将所选字符串作为LINQ2SQL datacontext构造函数中的第一个参数传递。

MyModelDataContext context = new MyModelDataContext(selectedConString);

答案 2 :(得分:1)

如果您的意思是通过切换应用程序正在查看的数据库,测试数据库和生产数据库,只需在web.config文件中使用相同的密钥创建两个连接字符串,但具有不同的连接字符串并注释其中一个他们根据所需的数据库

<add name="MyConnectioString" connectionString="Data Source=myServer;Initial Catalog=ProductionDB;" providerName="System.Data.SqlClient" />
<!--<add name="MyConnectioString" connectionString="Data Source=myServer;Initial Catalog=TestDB;" providerName="System.Data.SqlClient" />-->

通过注释和取消注释,您可以在运行时间在两个数据库之间切换。

选择上下文的连接字符串,为其提供构造函数

DataContext Productioncontext = new DataContext ("MyConnectioString");