如何使用EF Core整合遷移?

ef-migrations entity-framework entity-framework-core

我有這些遷移:

00000000000000_First
20161101000000_Foo
20161102000000_Bar
// ...many many MANY more
20161108000000_Baz

我想從FooBaz合併為一個新的遷移。我知道如何在EF中這樣做,但在EF Core中不知道。

我試過這個:

dotnet ef update database 00000000000000_First
// delete all other migration classes
dotnet ef migrations add Consolidated
dotnet ef update

我希望新的Consolidated遷移將包含對模型的所有更改。但它的Up()Down()方法是空的。

我究竟做錯了什麼?

一般承認的答案

你錯過了一步。由於新模型快照,在手動刪除遷移文件後,您需要運行dotnet ef migrations remove (或在PMC中Remove-Migration )以使其恢復同步。

您也可以只運行dotnet ef migrations remove多次刪除,而不是手動刪除文件,但它足夠聰明,可以檢測手動刪除的遷移。


熱門答案

EF Core在執行ef migrations add ,不會查看真實數據庫。僅使用您的代碼(以及Migrations文件夾中的數據庫模型快照)。

因此,您需要從遷移文件夾中刪除遷移(使用dotnet ef migrations remove多次),然後使用ef migrations add創建合併。

關於您的真實數據庫 - 如果您想要回滾它,您應該在刪除遷移之前運行ef database update XXX 。或者,如果要折疊所有遷移 - 您可以簡單地完全刪除數據庫,然後從新遷移重新創建。



Related

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