我新的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數據上下文的年份後,如何新創建數據庫(手動或編程方式)。 –