在实体框架迁移失败后,数据库处于什么状态?

时间:2015-11-24 11:06:32

标签: entity-framework ef-code-first ef-migrations

我们正在考虑在迁移时切换到实体框架代码优先,然后出现以下情况:

我们有3个待定迁移:

迁移1工作

迁移2失败

迁移3工作

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

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:3)

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

要强制手动回滚,请使用带有$('body').off('click', '**');选项的Update-Database命令。您必须在迁移中定义Down()方法才能使其正常工作。

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