我已经看过this question了,我想知道如何将自动迁移与显式迁移混合应用于生产环境。
我们假设我按以下顺序创建迁移:
由于没有为自动迁移创建文件,我们如何确保将在生产环境中创建的自动迁移SQL与在我们的开发机器上创建的SQL相同?
我有一种感觉,只要我们有第一个生产版本,我们就应该完全停止使用自动迁移......
答案 0 :(得分:0)
我之前已尝试过此类方案,并且根据您的迁移顺序,这就是EF的行为方式:
如果您已将所有这些应用于数据库并执行Update-Database -TargetMigration:0
,那么所有这些将按照应用的顺序还原。
执行Update-Database
后,所有显式迁移都将应用于数据库,如果您已设置AutomaticMigrationsEnabled = true;
,则应用[Timestamp]_[YourLastMigrationName]_AutomaticMigration
。
请注意,EF处理自动迁移的执行顺序!当我在自动迁移中创建新表XY
时,我认为会出现问题,而后面的Explicit Migration D
可能依赖于该表在数据库中(以及许多其他方案)。但由于迁移具有数据库的快照,因此EF将能够从这种情况中恢复并以某种方式重新安排自动迁移。
总结:如果不深入研究实体框架的代码,我不推荐这样的方法 - 不会试试我的运气。在我的项目中,我只使用显式迁移,它们在一个特定的 - 通常是主分支或迭代分支中维护(因为当一个团队成员创建了迁移B时出现问题) A的顶部和另一个在A)之上创建了C.