![](/img/trans.png)
[英]What's the point of multiple SaveChanges inside an entity-framework-core transaction?
[英]Merge migrations in 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 步保存在安全位置的內容填充上述遷移腳本(即.._InitialCreate
)的Up()
和Down()
方法。
就是這樣。 現在您只有 1 個遷移文件 :)
注意:帶有包管理器控制台 (PM) 的 EF 核心: 包管理器控制台
一種方法是物理刪除所有遷移文件並添加新文件。 如果您的遷移在“Migrations”文件夾中,您可以簡單地將其刪除,否則您也需要刪除您的“ModelSnapshot”文件。 我認為這種方法可以解決您的問題。
當您想合並除 N 個最后一次遷移之外的所有遷移時,協議就不一樣了:
dotnet ef database update NameOfTheLastMigration
dotnet ef migrations remove
dotnet ef database update
dotnet ef migrations add NameOfTheMergeMigration
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.