如何使用 EF Core 整合迁移?
How do I consolidate migrations using EF Core?
我有这些迁移:
00000000000000_First
20161101000000_Foo
20161102000000_Bar
// ...many many MANY more
20161108000000_Baz
我想将 Foo
到 Baz
整合到一个新迁移中。我知道如何在 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
在删除迁移之前。或者,如果您要折叠所有迁移 - 您可以简单地完全删除数据库,然后从新迁移中重新创建。
我有这些迁移:
00000000000000_First
20161101000000_Foo
20161102000000_Bar
// ...many many MANY more
20161108000000_Baz
我想将 Foo
到 Baz
整合到一个新迁移中。我知道如何在 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
在删除迁移之前。或者,如果您要折叠所有迁移 - 您可以简单地完全删除数据库,然后从新迁移中重新创建。