3

私は EF 4.3.1 を使用しており、1 つの基本コンテキストを駆動する 100 以上のコンテキストがあります。すべてのコンテキストで、データベースの初期化を無効にしたいと考えています。

Entity Framework の既定の動作を設定することは可能ですか?

前もって感謝します

4

3 に答える 3

2

Database.SetInitializer<TContext>あなたが求めているものです。また、このメソッドに null を渡すと、初期化が無効になります。

http://msdn.microsoft.com/en-us/library/gg679461(v=vs.103).aspx

于 2012-05-02T12:02:21.813 に答える
2
//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 タイプです

于 2014-04-19T00:32:28.603 に答える
2

* .configファイルを変更して、データベースの初期化を無効にすることができます。これはコンテキストごとに行われますが、基本コンテキストで機能する可能性があります。

<contexts>
  <context type=" Blogging.BlogContext, MyAssembly" disableDatabaseInitialization="true" />
</contexts>

EF 4.3構成ファイルの設定で、より良い説明が提供されています

于 2012-08-14T19:47:40.360 に答える