【问题标题】:Set database connection string at run time在运行时设置数据库连接字符串
【发布时间】:2014-11-21 03:17:03
【问题描述】:

我正在开发一个 MVC 4 网站。它应该允许用户根据视图中的用户选择来选择要连接的数据库。所有数据库具有相同的表结构和架构等。

我在 Web.config 文件中定义了一个数据库 ConnectionString,它允许连接到第一个数据库。

<connectionStrings>
    <add name="DBConnectionString" connectionString="Data Source=DATABSE_SERVER;Initial Catalog=DATABASE_NAME;Persist Security Info=True;User ID=USERNAME;Password=PASSWORD" providerName="System.Data.SqlClient" />
</connectionStrings>

我还使用 Linq DataContext 来初始化与数据库的连接。表映射都是在 MVC 4 中由 Linq to SQL 自动生成的。

public NEMP_DataDataContext() : 
            base(global::System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString, mappingSource)
{
    OnCreated();
}

实现这一目标的最佳方法是什么?

【问题讨论】:

  • 请不要只要求我们为您解决问题。向我们展示如何尝试自己解决问题,然后向我们确切地展示结果是什么,并告诉我们您为什么觉得它不起作用。请参阅“What Have You Tried?”了解您真正需要阅读的优秀文章。

标签: c# asp.net sql-server ado.net connection-string


【解决方案1】:

在 LINQ to SQL 中,您只需使用连接字符串创建上下文:

DataContext myContext = new DataContext(customConnectionString);

您无需担心关闭它们或其他任何事情。 SQL Server 正在为您处理所有这些。因此,您只需稍微调整连接字符串(数据库名称)并根据您需要使用上下文的每个页面中的任何变量创建一个新上下文。

【讨论】:

    【解决方案2】:

    可以使用SqlConnectionChangeDatabase方法

    MSDN

    【讨论】:

      【解决方案3】:
      1. 首先,您应该有一个存储来获取所有数据库连接。 也许存储是一个 xml 文件或一个简单的数据库。 但是你需要实现如何获取连接字符串。

      2. 如果您在应用程序中为您的 dataconext 使用了 EntityFramework。 您可以使用如下代码的构造函数:

        public ApplicationDbContext(string nameOfConnection)
            : base(nameOfConnection)
        {
            this.Configuration.ProxyCreationEnabled = true;
            this.Configuration.LazyLoadingEnabled = true;
        }
        
      3. 请调用 1 并获取 nameOfConneciton,然后调用 2 来初始化 DbContext。

      【讨论】:

      • 对不起,我用的不是 EF,而是 LINQ。
      • 但是原理是一样的。你可以这样试试。
      【解决方案4】:

      我不确定我是否完全理解您的问题。但我假设你问我们你想让用户选择他们想要连接的数据库。然后设置连接字符串。

      这是我的解决方案,例如,如果您有 5 个数据库让用户选择。您将这 5 个连接字符串写入 web.config。然后制作一个下拉列表或单选按钮,让用户选择数据库。然后做一个if语句。例如,如果第一个单选按钮被选中,那么

      String connection string=connection.string["the name of connection string in web.confug"];
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-18
        • 1970-01-01
        相关资源
        最近更新 更多