實體框架核心以編程方式應用遷移

asp.net-core ef-migrations entity-framework-core

我有測試和實時數據庫。對於測試數據庫遷移,我在包管理器控制台中使用Add-Migration ...Update-Database語法。但對於實時數據庫,我想在應用程序啟動時以編程方式執行此操作。

以下代碼對我沒有幫助:

context.Database.Migrate();

當我嘗試將記錄添加到不存在的表時,我有錯誤Invalid object name 'TempTenants' 。這是我的新表。

但我有_EFMigrationsHistory表。而且我的所有遷移都是那些未應用的遷移。但我沒有看到新表。

如果我從測試數據庫手動刪除表並嘗試重現錯誤,我將得到相同的結果。

所以, context.Database.Migrate();僅創建包含所有遷移的新數據庫(如果它不存在),但不更新(應用遷移)現有數據庫。

我能這樣做嗎?我該如何解決?

一般承認的答案

似乎出了點問題。我從__EFMigrationsHistory表中刪除了未應用的遷移(記錄)(我還需要將一些表名,主鍵和外鍵還原到以前的狀態)並再次啟動應用程序。

所以, context.Database.Migrate();即使對於現有數據庫也應用遷移。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow