在源代码管理中更改分支后,运行 Update-Database 以回滚到以前的迁移,EF 有时会显示文本“正在恢复自动迁移”,如下所示:
Reverting automatic migration: 201305171619008_DescriptiveNameForMigration.
Reverting code-based migration: 201305162023299_Init.
Entity Framework 如何确定迁移应该是自动的,它有什么不同?
以下是如何重现它,假设您有一个已经设置了代码优先迁移的项目:
- 切换到源代码管理中的新分支
- 更改模型、映射器并添加迁移
- 更新数据库
- 切换回默认分支
- 更新数据库-TargetMigration:0 -Force
- 请参阅 Update-Database 命令的结果中的“恢复自动迁移”
这就是我认为正在发生的事情,如果我错了,请纠正我。
- Update-Database 枚举 __MigrationHistory 中的迁移
- 在项目中找到对应的迁移文件,调用 Down() 方法
- 如果对应的迁移文件不存在,则根据 __MigrationHistory 中的快照对如何回滚迁移进行最佳猜测