実行時にエンティティ モデルが接続されているデータベースを切り替えるにはどうすればよいですか?
たとえば、トレーニング データベースと運用データベースがある場合、アプリケーションの設定を変更して、アプリケーションで 2 つのデータベースを切り替えるにはどうすればよいでしょうか。
実行時にエンティティ モデルが接続されているデータベースを切り替えるにはどうすればよいですか?
たとえば、トレーニング データベースと運用データベースがある場合、アプリケーションの設定を変更して、アプリケーションで 2 つのデータベースを切り替えるにはどうすればよいでしょうか。
通常、これは構成ファイルの設定によって行われます。これは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 用の 2 つの設定があり、次のようにコンテキストを実行します。
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);