Asp.net-Core
Entity Framework Core 以程式方式應用遷移
我有測試和實時數據庫。對於測試數據庫遷移,我在包管理器控制台中使用
Add-Migration ...和Update-Database語法。但是對於實時數據庫,我想在應用程序啟動時以程式方式進行。以下程式碼對我沒有幫助:
context.Database.Migrate();
Invalid object name 'TempTenants'當我嘗試將記錄添加到不存在的表時出現錯誤。這是我的新桌子。但我有
_EFMigrationsHistory桌子。還有我所有的遷移,甚至那些沒有應用的遷移。但我沒有看到新表。如果我從測試數據庫中手動刪除表並嘗試重現錯誤,我將得到相同的結果。
因此,
context.Database.Migrate();如果它不存在,則僅使用所有遷移創建新數據庫,但不要更新(應用遷移)現有數據庫。我可以這樣做嗎?我該如何解決呢?
好像出了什麼問題。我從
__EFMigrationsHistory表中刪除了未應用的遷移(記錄)(我還需要將一些表名、主鍵和外鍵恢復到以前的狀態)並再次啟動應用程序。因此,
context.Database.Migrate();即使對現有數據庫也應用遷移。