在生产环境中混合自动和显式迁移

时间:2015-05-17 08:33:51

标签: entity-framework entity-framework-6 ef-migrations

我已经看过this question了,我想知道如何将自动迁移与显式迁移混合应用于生产环境。

我们假设我按以下顺序创建迁移:

  • 显式迁移A
  • 明确迁移B
  • 自动迁移C
  • 明确的迁移D

由于没有为自动迁移创建文件,我们如何确保将在生产环境中创建的自动迁移SQL与在我们的开发机器上创建的SQL相同?

我有一种感觉,只要我们有第一个生产版本,我们就应该完全停止使用自动迁移......

1 个答案:

答案 0 :(得分:0)

我之前已尝试过此类方案,并且根据您的迁移顺序,这就是EF的行为方式:

  1. 如果您已将所有这些应用于数据库并执行Update-Database -TargetMigration:0,那么所有这些将按照应用的顺序还原。

  2. 执行Update-Database后,所有显式迁移都将应用于数据库,如果您已设置AutomaticMigrationsEnabled = true;,则应用[Timestamp]_[YourLastMigrationName]_AutomaticMigration

  3. 请注意,EF处理自动迁移的执行顺序!当我在自动迁移中创建新表XY时,我认为会出现问题,而后面的Explicit Migration D可能依赖于该表在数据库中(以及许多其他方案)。但由于迁移具有数据库的快照,因此EF将能够从这种情况中恢复并以某种方式重新安排自动迁移。

    总结:如果不深入研究实体框架的代码,我不推荐这样的方法 - 不会试试我的运气。在我的项目中,我只使用显式迁移,它们在一个特定的 - 通常是主分支或迭代分支中维护(因为当一个团队成员创建了迁移B时出现问题) A的顶部和另一个在A)之上创建了C.

相关问题