Entity Framework 迁移失败后数据库处于什么状态?

In what state is the Database after a failed Entity Framework migration?

我们正在考虑通过迁移切换到 Entity Framework 代码优先,出现以下情况:

我们有 3 个待处理的迁移:

迁移 1 有效

迁移 2 失败

迁移 3 有效

我 运行 迁移后,数据库处于什么状态?它是否回滚所有内容,是否执行迁移 1 并在 2 失败时将其回滚?迁移 2 是否回滚以及 1 和 3 是否定期完成?

感谢任何帮助。

据我所知,迁移器会在遇到无法应用的迁移时中止,但不会回滚任何先前的迁移。在您的示例中,数据库将处于仅应用迁移 1 的状态,您应该收到一条消息,指出迁移 2 包含错误。

要强制手动回滚,请使用带有 -TargetMigration <Full Migration Name> 选项的 Update-Database 命令。您必须在迁移中定义 Down() 方法才能正常工作。

为每个单独的迁移创建一个事务,并在每个迁移结束时提交,即每个迁移都被完全应用或根本不应用。