我们正在考虑在迁移时切换到实体框架代码优先,然后出现以下情况:
我们有3个待定迁移:
迁移1工作
迁移2失败
迁移3工作
运行迁移后,数据库处于什么状态?它是否会回滚所有内容,是否会进行迁移1并在2次失败时将其回滚?迁移2是否已回滚,1和3是否定期完成?
任何帮助表示感谢。
答案 0 :(得分:3)
据我所知,迁移器在遇到无法应用的迁移时会中止,但不会回滚任何先前的迁移。在您的示例中,数据库将处于仅应用迁移1的状态,您应该收到迁移2包含错误的消息。
要强制手动回滚,请使用带有$('body').off('click', '**');
选项的Update-Database
命令。您必须在迁移中定义Down()方法才能使其正常工作。
为每个单独的迁移创建一个事务,并在每次迁移结束时提交,即每次迁移都是全部迁移或根本不应用。