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

问题描述:

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

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

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

-Datte

+1

你如何连接到数据库? ADO.NET? LINQ to SQL?实体框架? NHibernate的?还有别的吗? – jrista 2009-10-27 05:40:50

+0

是的,我正在使用实体框架... – dattebayo 2009-10-27 06:11:16

下面是一个非常简单的方法来做我认为你问的东西。在你的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; 
    } 
} 

你当然可以改变最有意义的选择标准。

祝你好运!