(これは以前は2部構成の質問でしたが、2番目の部分は文字通り重要なものなので、これを2つの別々の投稿に分割することにしました。2番目の部分については、シリアル化を使用してEntityFrameworkの2つのObjectContext間でエンティティをコピーするを参照してください。
エンティティモデル用のデータベースのかなり一般的な「クローナー」を作成したいと思います。また、さまざまなプロバイダーなどをサポートする必要があるかもしれません。ObjectContext
APIを使用しています。
私はすでにこの質問とEntityConnectionStringBuilderMDSNドキュメントの例を知っていますが、 ?のプロパティを初期Provider
化するための値を取得するプログラム的な方法があるかどうかを知る必要があります。Metadata
EntityConnectionStringBuilder
using (var sourceContext = new EntityContext()) {
var sourceConnection = (EntityConnection) sourceContext.Connection;
var targetConnectionBuilder = new EntityConnectionStringBuilder();
targetConnectionBuilder.ProviderConnectionString = GetTargetConnectionString();
targetConnectionBuilder.Provider = "System.Data.SqlClient"; // want code
targetConnectionBuilder.Metadata = "res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl"; // want code
using (var targetContext = new EntityContext(targetConnectionBuilder.ConnectionString)) {
if (!targetContext.DatabaseExists())
targetContext.CreateDatabase();
// how to copy all data from the source DB to the target DB???
}
}
つまり、をフェッチする方法はありますか
"System.Data.SqlClient"
"res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl"
どこかから、リテラル値を使用しませんか?