2012-06-20 44 views
0

如何在运行时切换实体模型所连接的数据库?在运行时更改实体模型数据库

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

+0

配置文件中的连接字符串?我不太熟悉WPF,但在WCF或ASP.NET中,会有一个web.config。 –

回答

1

贾斯汀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); 
+0

这正是我所期待的。谢谢。 – mdhunt

1

通常这是通过配置文件设置完成的。 Here is the MSDN on EF connection stringshere is some more info on it, basically saying it should be in your app.config

而且,如果你想从代码的东西,here is a code project

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); 
相关问题