我已經IgnoreChanges
了我的遷移,我在初始遷移時使用了IgnoreChanges
,但是現在我想要刪除所有的遷移並開始使用所有邏輯進行初始遷移。
當我刪除文件夾中的遷移並嘗試Add-Migration
它不會生成一個完整的文件(它是空的 - 因為我上次沒有進行任何更改,但現在已刪除,遷移)。
是否有任何Disable-Migrations命令,所以我可以重新運行Enable-Migrations
?
你需要 :
__MigrationHistory
表(可能在系統表下);然後在程序包管理器控制台中運行以下命令:
Enable-Migrations -EnableAutomaticMigrations -Force
使用或不使用-EnableAutomaticMigrations
最後,你可以運行:
Add-Migration Initial
問題:您已經搞砸了遷移,並且想要在不刪除現有表的情況下重置它。
問題:由於EF希望從頭開始創建表,因此無法使用數據庫中的現有表重置遷移。
該怎麼辦:
從Migrations_History表中刪除現有遷移。
從“遷移”文件夾中刪除現有遷移。
運行add-migration Reset。這將在您的Migration文件夾中創建一個包含創建表的遷移(但它不會運行它,因此不會出錯。)
您現在需要在MigrationHistory表中創建初始行,以便EF具有當前狀態的快照。如果您應用遷移,EF將執行此操作。但是,由於數據庫中已存在表,因此無法應用剛剛進行的遷移。所以進入遷移並註釋掉“Up”方法中的所有代碼。
現在運行update-database。它將應用遷移(而不是實際更改數據庫)並在MigrationHistory中創建快照行。
您現在已重置遷移,並可能繼續正常遷移。