如何动态地与一个实体框架连接多个数据库。

时间:2014-03-06 16:31:55

标签: asp.net-mvc-4 sql-server-2012 entity-framework-5

这是我的MVC项目。我正在使用实体框架5.我有一个主客户端数据库脚本。我可以创建许多客户端数据库,只有数据库名称不同。现在我有一个实体框架模型客户端数据库。我需要动态连接不同的数据库。我将从一个文本框中获取数据库名称。我知道它将从web.config获取连接字符串并更改数据库名称。但我不能找到这样的解决方案。我也试过“SqlConnectionStringBuilder”。我应该只在web.config中使用一个连接字符串,而在主客户端数据库中只使用一个连接字符串。

这是我的web.config连接字符串

    <add name="SBAClientEntities" connectionString="metadata=res://*/Models.ClientModel.csdl|res://*/Models.ClientModel.ssdl|res://*/Models.ClientModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=USER-PC\SQL2012SERVER1;initial catalog=SBAClient;persist security info=True;user id=sa;password=sa12345;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

这是我的实体模型Context类

 public partial class SBAClientEntities : DbContext
{
    public SBAClientEntities()
        : base("name=SBAClientEntities")
    {
    }
    public SBAClientEntities(string databaseName)
        : base("name=SBAClientEntities")
    {
    }


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public DbSet<CM_Customer_UISetings> CM_Customer_UISetings { get; set; }
}

以下是与存储库中的数据库连接的代码

 using (SBAClientEntities db1 = new SBAClientEntities(databaseName))
        {
            CusFontViewModel obj = new CusFontViewModel();

            var result = from c in db1.CM_Customer_UISetings
                         select c;
            obj.itemList = result.ToList();
            return obj;
        }

1 个答案:

答案 0 :(得分:1)

SBAClientEntities dbWILLBECHANGED =  new  SBAClientEntities();
dbWILLBECHANGED.Database.Connection.Open();
dbWILLBECHANGED.Database.Connection.ChangeDatabase(DatabaseNEWName);