我想创建一个自定义配置屏幕,以便我可以在运行时修改 LINQ 数据库连接。除了更改需要我重新启动软件的 app.config 之外,我是否可以在运行时更改 LINQ 数据库连接字符串?并将其存储在项目的设置中?
问问题
2141 次
2 回答
0
这是我在项目中使用的代码。它是静态的,因此可以在任何地方调用。将 MyEntities 和 MyModel 更改为项目的适当名称。
public static MyEntities NewContext()
{
var y = new System.Data.EntityClient.EntityConnectionStringBuilder();
y.Provider = "System.Data.SqlClient";
string conn = CodeToGetConnectionStringHere();
if(!conn.EndsWith(";")) conn += ";";
conn += "MultipleActiveResultSets=true";
y.ProviderConnectionString = conn;
y.Metadata = "res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl";
return new MyEntities(y.ConnectionString);
}
于 2012-08-13T06:30:12.490 回答
0
您可以安全地将连接字符串存储在项目设置中;并使用EntityConnectionStringBuilder类构建它。
class ConnectionStringFactory
{
internal stati string BuildModelConnectionString(string connectionString)
{
var builder = new EntityConnectionStringBuilder
{
Provider = "System.Data.SqlClient",
Metadata = @"your metadata string",
ProviderConnectionString = connectionString
};
return builder.ConnectionString;
}
}
然后,您可以在代码中使用上面的方法,如下所示:
var connectionString = ConnectionStringFactory.BuildModelConnectionString(Settings.ConnectionString);
using(var dataContext = new DataContext(connectionString))
{
// your logic here...
}
于 2012-08-13T06:55:15.500 回答