连接到MVC Web应用程序中的多个数据库

时间:2009-10-27 05:37:48

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

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

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

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

-Datte

1 个答案:

答案 0 :(得分:8)

这是一种非常简单的方式来做我认为你在问的问题。在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;
    }
}

您当然可以更改最合理的选择标准。

祝你好运!