使用流畅迁移器的上下文回滚



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

因此,如果我已经应用了 5 次迁移(假设迁移的顺序 id(,我将在数据库中的版本 5 上,因此如果我还有 5 次迁移(最多 10 次(并且我做了滚动预览,它似乎知道它需要应用 6-10,这很棒,但推出预览似乎不知道它需要撤消 10-6。

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

这是不可能的,"似乎"知道它只需要应用 6-10 的唯一方法是因为 Fluent migrator 在您的数据库中创建一个表,其中包含应用于数据库的每个迁移的记录。因此,在您的方案中,有五行,最后一行是迁移五行。

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

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

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

最新更新