【问题标题】:Contextual rollback with fluentmigrator使用 fluentmigrator 进行上下文回滚
【发布时间】:2017-09-19 04:58:35
【问题描述】:

Fluentmigrator 会跟踪已将哪些迁移应用到数据库,这很棒,但似乎没有可以回滚到数据库中当前版本的情况。

因此,如果我已经应用了 5 次迁移(假设迁移的顺序 id),我将使用数据库中的第 5 版,所以如果我还有 5 次迁移(最多 10 次)并且我会进行滚动预览, 似乎知道需要应用 6-10 这很好,但是推出预览似乎不知道需要撤消 10-6。

CLI 说 rollback 任务默认回滚 1 步,如果您要在没有特定 version 的情况下执行 migrate:down ,它将回滚所有迁移(假设到版本 0),所以是否有如何让它在那个时间点将所有版本回滚到数据库中的内容?

【问题讨论】:

    标签: .net database-migration fluent-migrator


    【解决方案1】:

    这是不可能的,它“似乎”知道它只需要应用 6-10 的唯一方法是因为 fluent 迁移器在您的数据库中创建了一个表,其中包含应用到您的数据库的每个迁移的记录。因此,在您的场景中,有五行,最后一行是迁移五行。

    当您运行 fluent 迁移器时,它会检查该表,以了解应该应用哪些迁移,因此它知道您在 5 点停止,然后在 6-10 点应用。

    现在反过来是不可能的,因为在某个时间点应用的迁移没有上下文。

    但是,您可以覆盖 down 函数的行为,例如检查特定迁移是否应该根据您保留的数字运行 down 函数,该数字将代表您的特定时间点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 2013-01-18
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多