2016-11-22 123 views
3

是否可以將所有遷移文件合併爲一個?在entity-framework-core中合併遷移

我創建了初始遷移。

dotnet ef migrations add InitialMigration 

Source

當過我有一些模型變化,我創建新的遷移更新。

但現在我有太多的遷移更新文件。 是否有可能將所有遷移文件合併爲一個?

當然,刪除數據庫是不是一種選擇,我一定要保存的數據!要做到這一點

+0

是沒有意義的,你的數據庫可以在**任何移民狀態**。即如果你有6次遷移,你的數據庫在遷移4,但如果你合併3到6到一個遷移文件,你不能永遠升級你的數據庫,這是第4次遷移 – Tseng

+0

你可以做的最好的事情是,如果你有15個遷移,回滾到遷移2,然後創建一個新的遷移。但是,如果您的應用程序在多個處於不同狀態的服務器上運行(您永遠無法回滾比正在使用的最舊遷移更遠),那麼上述問題仍然存在以上問題。 – Tseng

回答

10

EF 6.X有一個選項IgnoreChanges。那是爲您的方案的完美契合。但不幸的是,它不是EF核心。

但你有一個解決方法。

第1步:刪除的文件夾遷移的所有遷移腳本。

步驟2:在包管理器控制檯:運行

PM> Add-Migration InitialCreate 

第3步:同時刪除Up()Down()方法code.Before做保持這些方法以供將來使用單獨的內容。

第4步:運行:

PM> Update-Database 

它會插入新記錄到__EFMigrationsHistory表。

第5步:後,填補上述遷移腳本(即.._InitialCreateUp()Down()從那裏您可以繼續在安全的地方上步驟3內容的方法。

也就是說it.Now你只有1遷移文件:

注: EF核心與包管理控制檯(PM):Package Manager Console

+0

我只是不確定是否可以在實體中運行遷移來自軟件包管理器控制檯的-framework-core。我不能。我必須從命令提示符完成此操作。 – Raskolnikov

+0

你可以在這裏查看文檔:https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell – Sampath

+0

請參閱**注**。 – Sampath

0

的一種方法是物理清除所有遷移文件和添加新的。如果您的遷移處於「遷移」文件夾中,您可以直接刪除它,否則您需要刪除「ModelSnapshot」文件。我認爲這種方法可以解決你的問題。