如何使用EF Core整合迁移?

时间:2016-11-08 10:02:19

标签: entity-framework entity-framework-core ef-migrations

我有这些迁移:

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()方法是空的。

我做错了什么?

2 个答案:

答案 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。或者,如果要折叠所有迁移 - 您可以简单地完全删除数据库,然后从新迁移中重新创建。