0

我想创建一个自定义配置屏幕,以便我可以在运行时修改 LINQ 数据库连接。除了更改需要我重新启动软件的 app.config 之外,我是否可以在运行时更改 LINQ 数据库连接字符串?并将其存储在项目的设置中?

4

2 回答 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 回答