Asp.net-Core

Entity Framework Core 以程式方式應用遷移

  • December 27, 2016

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

以下程式碼對我沒有幫助:

context.Database.Migrate();

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

但我有_EFMigrationsHistory桌子。還有我所有的遷移,甚至那些沒有應用的遷移。但我沒有看到新表。

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

因此,context.Database.Migrate();如果它不存在,則僅使用所有遷移創建新數據庫,但不要更新(應用遷移)現有數據庫。

我可以這樣做嗎?我該如何解決呢?

好像出了什麼問題。我從__EFMigrationsHistory表中刪除了未應用的遷移(記錄)(我還需要將一些表名、主鍵和外鍵恢復到以前的狀態)並再次啟動應用程序。

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

引用自:https://stackoverflow.com/questions/41331428