【问题标题】:How to change LINQ to SQL connection string dynamically at runtime and store in Project Settings?如何在运行时动态更改 LINQ to SQL 连接字符串并存储在项目设置中?
【发布时间】:2012-08-13 18:58:38
【问题描述】:

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

【问题讨论】:

标签: c# vb.net linq linq-to-sql configuration


【解决方案1】:

这是我在项目中使用的代码。它是静态的,因此可以在任何地方调用。将 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);
    }

【讨论】:

  • 我没用过linq to sql所以无法回答。
【解决方案2】:

您可以安全地将连接字符串存储在项目设置中;并使用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...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2023-02-23
    相关资源
    最近更新 更多