如何切换我的实体模型在运行时连接到的数据库?
例如,如果我有一个培训数据库和一个生产数据库,如何通过更改应用程序中的设置来使我的应用程序在两者之间切换。
如何切换我的实体模型在运行时连接到的数据库?
例如,如果我有一个培训数据库和一个生产数据库,如何通过更改应用程序中的设置来使我的应用程序在两者之间切换。
通常这是通过配置文件设置完成的。这是关于 EF 连接字符串的 MSDN,这里有一些关于它的更多信息,基本上说它应该在你的 app.config 中
而且,如果你想从代码中得到一些东西,这里是一个代码项目:
string connectionString = new System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
System.Data.SqlClient.SqlConnectionStringBuilder scsb = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);
EntityConnectionStringBuilder ecb = new EntityConnectionStringBuilder();
ecb.Metadata = "res://*/Sample.csdl|res://*/Sample.ssdl|res://*/Sample.msl";
ecb.Provider = "System.Data.SqlClient";
ecb.ProviderConnectionString = scsb.ConnectionString;
dataContext = new SampleEntities(ecb.ConnectionString);
Justin Pihony 有正确的答案。如果您想同时访问两个数据库(来回切换)而不是更改配置并重新启动应用程序.....那么您有两个设置,一个用于 Train,一个用于 Prod,那么您可以像这样执行上下文:
string training = ConfigurationManager.ConnectionStrings["Train"].ToString();
string production = ConfigurationManager.ConnectionStrings["Prod"].ToString();
.....
EFContext context = null;
if (InTraining)
context = new EfContext(training);
else
context = new EfContext(production);