0

如何切换我的实体模型在运行时连接到的数据库?

例如,如果我有一个培训数据库和一个生产数据库,如何通过更改应用程序中的设置来使我的应用程序在两者之间切换。

4

2 回答 2

1

通常这是通过配置文件设置完成的。这是关于 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);
于 2012-06-20T20:17:32.457 回答
1

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);
于 2012-06-20T20:47:06.403 回答