私は EF 4.3.1 を使用しており、1 つの基本コンテキストを駆動する 100 以上のコンテキストがあります。すべてのコンテキストで、データベースの初期化を無効にしたいと考えています。
Entity Framework の既定の動作を設定することは可能ですか?
前もって感謝します
私は EF 4.3.1 を使用しており、1 つの基本コンテキストを駆動する 100 以上のコンテキストがあります。すべてのコンテキストで、データベースの初期化を無効にしたいと考えています。
Entity Framework の既定の動作を設定することは可能ですか?
前もって感謝します
Database.SetInitializer<TContext>
あなたが求めているものです。また、このメソッドに null を渡すと、初期化が無効になります。
http://msdn.microsoft.com/en-us/library/gg679461(v=vs.103).aspx
//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});
}
最後に、次のようなものが得られます: Database.SetInitializer<YourDbContext>(null);
YourDbContext は、ループ内の現在の dbContext タイプです
* .configファイルを変更して、データベースの初期化を無効にすることができます。これはコンテキストごとに行われますが、基本コンテキストで機能する可能性があります。
<contexts>
<context type=" Blogging.BlogContext, MyAssembly" disableDatabaseInitialization="true" />
</contexts>
EF 4.3構成ファイルの設定で、より良い説明が提供されています