回答
//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類型
Database.SetInitializer<TContext>
是你所追求的。將null傳遞給此方法應禁用初始化。
http://msdn.microsoft.com/en-us/library/gg679461(v=vs.103).aspx
這不是我想要的,因爲我不想編輯100多個實體。當我爲基本上下文運行此代碼時,它不會更改任何內容並創建數據庫。 –
如果你在所有派生的上下文中都有DbInitializer代碼,那麼,不,這不會工作,因爲派生的構造函數在基礎構造函數之後運行,所以它只會關閉它,然後再次啓動。 – rism
你可以改變你的* 的.config文件來禁用數據庫初始化。這是根據上下文完成的,但也許它適用於您的基本上下文。
<contexts>
<context type=" Blogging.BlogContext, MyAssembly" disableDatabaseInitialization="true" />
</contexts>
不錯的想法,但它不適用於基礎上下文。 –
由於代碼覆蓋配置,因此這不起作用。 – rism
- 1. 實體框架數據初始化
- 2. 實體框架數據庫初始化:初始化新的Azure SqlDatabase時超時
- 3. C#實體框架沒有初始化數據庫
- 4. 實體框架數據庫初始化 - 對於固定列表
- 5. 實體框架工作數據庫優先初始化
- 6. 實體框架數據庫初始化者添加列
- 7. 實體框架數據庫初始化失敗
- 8. 初始化數據庫與實體框架6碼首先
- 9. 實體框架6遷移:如何在數據庫初始化時禁用自動更新數據庫?
- 10. 實體框架錯誤初始化
- 11. 休眠4.3初始化實體
- 12. 實體框架4.3
- 13. 實體框架:建立時,只有種子初始數據庫
- 14. 初始化對象在實體框架代碼數據庫首先
- 15. 實體框架代碼第一個數據庫與關係的初始化
- 16. 當POCO實體實體框架中被初始化檢測
- 17. C#實體框架4.3
- 18. 實體框架,數據庫
- 19. 實體框架4.3更新數據庫時的遷移異常
- 20. 實體框架4.3合併多個數據庫/上下文
- 21. 實體框架4.3不創建數據庫
- 22. 實體框架4.3現有數據庫的遷移問題
- 23. 實體框架4.3代碼優先數據庫命名
- 24. 實體框架4.3數據庫遷移代碼第一,數據庫依賴
- 25. 使用實體框架4.3遷移而不依賴於實際的數據庫
- 26. 使用代碼第一個實體框架初始化類
- 27. 使用依賴注入初始化實體框架模型?
- 28. 充分利用實體框架(類型初始化除外)
- 29. 實體框架4.3,使用連接
- 30. 使用實體框架數據庫
只是想點你應該重新提出你的問題,提到你需要這種行爲來處理多種情況。所有提供的答案都適用於任何給定的上下文。另外,你不應該在問題標題中使用標籤,因爲它是多餘的。我決定不編輯它,因爲我覺得你應該在同一時間重新修改它。 – julealgon
這個問題很古老,但我不得不問,爲什麼你只是在代碼中註釋掉初始化行呢? – rism