私はEF 4.3.1を使用しており、1つの基本コンテキストを駆動する100以上のコンテキストを持っています。すべてのコンテキストで、私はデータベースの初期化を無効にします。Entity Framework 4.3のデータベース初期化を無効にする
Entity Frameworkの既定の動作を設定することはできますか?事前に
おかげ
私はEF 4.3.1を使用しており、1つの基本コンテキストを駆動する100以上のコンテキストを持っています。すべてのコンテキストで、私はデータベースの初期化を無効にします。Entity Framework 4.3のデータベース初期化を無効にする
Entity Frameworkの既定の動作を設定することはできますか?事前に
おかげ
//Gather all the DbContexts types in the assembly
var allDbContextsTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.BaseType == (typeof(DbContext))).ToList();
foreach (Type dbContextType in allDbContextsTypes)
{
//Get the SetInitializerMethod
MethodInfo initializerMethod = typeof(Database).GetMethod("SetInitializer");
//Make it generic! (Oh yeah)
MethodInfo dbContextInitializerMethod = initializerMethod.MakeGenericMethod(dbContextType);
//Invoke the method with null initializer
dbContextInitializerMethod.Invoke(null, new object[]{null});
}
で与えられ、それは次のようなものを与える:YourDbContextはあなたのループ
Database.SetInitializer<TContext>
あなたが後にしているものです。また、nullをこのメソッドに渡すと、初期化が無効になります。
http://msdn.microsoft.com/en-us/library/gg679461(v=vs.103).aspx
私は100以上のエンティティを編集したくないので、これは私が探しているものではありません。このコードをベースコンテキスト用に実行すると、何も変更されずにdbが作成されます。 –
DbInitializerコードがすべての派生コンテキストにある場合は、派生コンストラクタが基本コンストラクタの後に実行されるため、このコンストラクタはターンオフしてから再びオンになるため、この動作はしません。 – rism
は、データベースの初期化を無効にするには、あなたの* の.configファイルを変更することができます。これはコンテキストごとに行われますが、基本コンテキストではうまくいくかもしれません。
<contexts>
<context type=" Blogging.BlogContext, MyAssembly" disableDatabaseInitialization="true" />
</contexts>
より良い説明は終わりでEF 4.3 Configuration File Settings
いい考えですが、基本コンテキストではうまくいきませんでした。 –
コードが設定を上書きするため、これは機能しません。 – rism
における現在のdbContextタイプがちょうど指すようにたかっている
Database.SetInitializer<YourDbContext>(null);
あなたはおそらく、あなたが複数の文脈に対してこの振る舞いを必要としていることを言及するためにあなたの質問に言い直すべきであるということです提供されたすべての回答は、任意のコンテキストでOKです。また、冗長であるため、質問のタイトルにタグを使用しないでください。私はあなたが同時にそれを言い換えるべきであると感じているので、私はそれを編集しないことにしました。 – julealgonこの質問は非常に古くなっていますが、どうしてあなたのコード内のイニシャライザ行をコメントアウトしていないのですか? – rism