合併實體框架核心中的遷移

asp.net-core c# entity-framework entity-framework-core

是否可以將所有遷移文件合併為一個?

我創建了初始遷移。

dotnet ef migrations add InitialMigration

資源

當我有一些模型更改時,我創建了新的遷移更新。

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

當然丟棄數據庫不是一個選項,我必須保存數據!

一般承認的答案

EF 6.X有一個選項IgnoreChanges 。這非常適合您的場景。但不幸的是,它不是EF核心中的一個功能。

但有一個解決方法。

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

第2步:在包管理器控制台中:運行

PM> Add-Migration InitialCreate

第3步:刪除Up()Down()方法代碼。在執行此操作之前,請將這些方法保存在其他位置,因為我們將在步驟5中再次使用它們。

第4步:運行:

 PM> Update-Database

它會在__EFMigrationsHistory表中插入一條新記錄。

步驟5:之後,從保存在步驟3的安全位置的內容中填寫上述遷移腳本(即.._InitialCreateUp()Down()方法。

這就對了。現在你只有1個遷移文件:)

注意:帶有軟件包管理器控制台(PM)的EF核心: 軟件包管理器控制台


熱門答案

一種方法是在物理上刪除所有遷移文件並添加新文件。如果您的遷移位於“遷移”文件夾中,則只需刪除它,否則您也需要刪除“ModelSnapshot”文件。我認為這種方法可以解決您的問題。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因