仅在 Asp.net 中回滚到特定迁移

Posted

技术标签:

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

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

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

EF Migrations: Rollback last applied migration?

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

【讨论】:

以上是关于仅在 Asp.net 中回滚到特定迁移的主要内容,如果未能解决你的问题,请参考以下文章

如何在循环中回滚到下一次迭代?

如何在 Amazon S3 存储桶中回滚到以前的版本?

当单值事件或事务的嵌套 ValueEventListener 失败时,如何在 Firebase Realtime DB for Android 中回滚到以前的状态?

如何在 googleplay 中回滚 apk 版本? [复制]

回滚到以前的迁移时出错

如何回滚到以前的迁移并删除架构中的表和列?