我新的MVC和我创建了两个的DbContext(2016年和2017年),与DB第一种方法,我将访问此,根据年份不同参数ASP.NET MVC DB首先创建动态的DbContext
在web.config中:
<add name="DB2016Context" connectionString="metadata=res://*/Models.Model2016.csdl|res://*/Models.Model2016.ssdl|res://*/Models.Model2016.msl;provider=System.Data.SqlClient;provider connection string="data source=DBSource;initial catalog=DB2016;persist security info=True;user id=xx;password=xx;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
<add name="DB2017Context" connectionString="metadata=res://*/Models.Model2017.csdl|res://*/Models.Model2017.ssdl|res://*/Models.Model2017.msl;provider=System.Data.SqlClient;provider connection string="data source=DBSource;initial catalog=DB2017;persist security info=True;user id=xx;password=xx;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
我已创建模型MyDbContext.cs
public DbMyContext(int year)
: base("name=DB" + year + "Context")
{ }
对于使用
DbMyContext dbSelected = new DbMyContext(year);
DbSet<Models.Tab1> tab1 = dbSelected.Set<Models.Tab1>();
using (dbSelected)
{
var query = (from a in tab1
where a.YEAR== year
orderby a.NAME
select new { a.ID, a.YEAR, a.NAME }).Distinct();
我的问题:每年创建一个新的数据库,相同的结构和我的应用程序应动态地创建一个dbcontext连接到每一个,而不必手动去创建它。
我很抱歉,如果我不是很清楚。 谢谢
要动态生成'DBContext',您需要生成相应的EF'connectionString'并将其写入'appSettings'。提示:“OpenWebConfiguration”和“EntityConnectionStringBuilder”(目前提供的代码您的意图仍不清楚)。 –
你的意思是在web.config中添加与已经存在但年份不同的字符串? ES。 –
Massi
是的,这是我现在想的。我想知道如何通过为该数据库定义'EntityConnectionStringBuilder'(也从中生成数据模型类)来更改绑定到EF数据上下文的年份后,如何新创建数据库(手动或编程方式)。 –