我有这些迁移:
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()
方法是空的。
我做错了什么?
答案 0 :(得分:6)
你错过了一步。由于新模型快照,在手动删除迁移文件后,您需要运行dotnet ef migrations remove
(或PMC中的Remove-Migration
)以使其恢复同步。
您可以多次运行dotnet ef migrations remove
,而不是手动删除文件,但它足够聪明,可以检测手动删除的迁移。
答案 1 :(得分:2)
EF Core在执行ef migrations add
时,不会查看真实数据库。仅使用您的代码(以及Migrations
文件夹中的数据库模型快照)。
因此,您需要从迁移文件夹中删除迁移(多次使用dotnet ef migrations remove
),然后使用ef migrations add
创建合并。
关于您的真实数据库 - 如果您想要回滚它,则应在删除迁移之前运行ef database update XXX
。或者,如果要折叠所有迁移 - 您可以简单地完全删除数据库,然后从新迁移中重新创建。