【问题标题】:Rollback to a specific migration only in Asp.net仅在 Asp.net 中回滚到特定迁移
【发布时间】:2018-01-05 13:22:44
【问题描述】:

回滚到特定迁移(C)意味着回滚(G,F,D,E)之间的所有迁移。他们是一种方式,我们可以只回滚回滚迁移 c 而不会影响其他迁移。

我还查看了针对此主题的其他问题,但对这种机制有所了解。

EF Migrations: Rollback last applied migration?

【问题讨论】:

    标签: c# asp.net visual-studio-2015 entity-framework-6 entity-framework-migrations


    【解决方案1】:

    它确实取决于更改,但如果迁移 C 中的更改独立于 D - G 更改,您可以这样做:

    1. 添加新的迁移 H.
    2. 将 C 中的 Down() 代码复制到 H 的 Up() 代码中。
    3. 将 C 中的 Up() 代码复制到 H 的 Down() 代码中。
    4. update-database

    另一种选择是只撤消代码中的模型更改,下一次迁移将撤消它们。

    如果部署的数据库都应用了这些迁移,您可以这样做:

    1. 回滚到迁移 B (update-database -TargetMigration B)。
    2. 在代码和 __MigrationHistory 表中删除迁移 C - G。
    3. 添加一个新的迁移 C。这将包括使数据库保持最新的所有更改(以前的 D - G)。
    4. update-database

    要记住的关键是,迁移将查看模型的最后一次代码迁移,然后将其与您现在的代码模型进行比较。欲了解更多信息,请参阅here

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 2014-06-21
      • 2017-03-18
      • 2017-10-21
      • 2011-04-08
      • 2017-02-24
      • 1970-01-01
      • 2017-10-25
      • 2013-07-15
      相关资源
      最近更新 更多