【问题标题】:Connecting to multiple databases in MVC web application在 MVC Web 应用程序中连接到多个数据库
【发布时间】:2023-04-09 23:27:01
【问题描述】:

如何为用 C# 编写的 .NET MVC Web 应用程序连接到不同的数据库?

这里的数据库表结构保持不变。所有改变的是数据库名称。那么如何手动连接数据库或使用修改连接字符串呢?

诀窍是使用相同的代码。根据我希望从不同数据库显示数据的 URL。所以视图和控制器(几乎)只有一个代码w.r.t。该模型。

-达特

【问题讨论】:

  • 你是如何连接到数据库的? ADO.NET? LINQ到SQL?实体框架?休眠?还有什么?
  • 是的,我正在使用实体框架...

标签: c# .net asp.net-mvc entity-framework database-connection


【解决方案1】:

这是一种非常简单的方法来完成我认为您所要求的操作。在您的 web.config 文件中,您可以定义两个连接字符串:

<connectionStrings>
    <add name="DevelopmentDB" providerName="System.Data.SqlClient"
        connectionString="Data Source=sql-dev.example.com;Initial Catalog=MyDB;User Id=MyUser;Password=MyPassword" />
    <add name="ProductionDB" providerName="System.Data.SqlClient"
        connectionString="Data Source=sql-prod.example.com;Initial Catalog=MyDB;User Id=MyUser;Password=MyPassword" />
</connectionStrings>

然后,在您的(基本)控制器中,您可以创建一个根据请求返回适当连接字符串的方法,例如:

internal string ConnectionString
{
    get
    {
        return getConnectionStringByServerName(this.HttpContext.Request.ServerVariables["SERVER_NAME"]);
    }
}

internal string getConnectionStringByServerName(string serverName)
{
    if (serverName.Equals("localhost"))
    {
        return WebConfigurationManager.ConnectionStrings["DevelopmentDB"].ConnectionString;
    }
    else
    {
        return WebConfigurationManager.ConnectionStrings["ProductionDB"].ConnectionString;
    }
}

您当然可以更改最有意义的选择标准。

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    相关资源
    最近更新 更多