这是我的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="data source=USER-PC\SQL2012SERVER1;initial catalog=SBAClient;persist security info=True;user id=sa;password=sa12345;MultipleActiveResultSets=True;App=EntityFramework"" 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;
}
答案 0 :(得分:1)
SBAClientEntities dbWILLBECHANGED = new SBAClientEntities();
dbWILLBECHANGED.Database.Connection.Open();
dbWILLBECHANGED.Database.Connection.ChangeDatabase(DatabaseNEWName);