回滚到 FluentMigrator 中的特定迁移

Rollback to a specfic Migration in FluentMigrator

假设我使用 FluentMigrator 创建了三个 Table 并分别给它们版本号 1、2、3。现在有什么方法可以回滚到版本 2。我的意思是回滚后我应该有 Table 1 和 2 而不是 3。

这是我在命令行运行器工具中使用的批处理文件

@echo off
if "%1" == "rollback" goto rollback
if "%1" == "" goto migrate
if "%1" == "version" goto version
if "%1" == "down" goto down
goto error

:migrate
migrate -db SqlServer2014 -connection "Server=[YOUR CONNECTTION STRING]" -assembly "[YOUR MIGRATION ASSEMBLY]"
goto done

:rollback
migrate -db SqlServer2014 -connection "Server=[YOUR CONNECTTION STRING]" -assembly "[YOUR MIGRATION ASSEMBLY]" -task rollback:all
goto done

:version
migrate -db SqlServer2014 -version "%2" -connection "Server=[YOUR CONNECTTION STRING]" -assembly "[YOUR MIGRATION ASSEMBLY]"
goto done

:down
migrate -db SqlServer2014 -version %2 -connection "Server=[YOUR CONNECTTION STRING]" -assembly "[YOUR MIGRATION ASSEMBLY]" -task rollback:toversion

:error
echo "No valid command"

:done
echo "Completed"

那你就用第四个选项: down 如下

  1. 在批处理文件所在的目录下打开一个Cmd,该目录下需要存在命令行运行器dll和迁移程序集dll
  2. 运行 以下 [批处理文件名].bat 下载 [您要回滚到的版本:即,您希望作为最后一个迁移]

因此,在您的示例中,这将是 "down 2",这将回滚 3 而您将保留 1 和 2。

更多关于Command Line Runner

使用下面的命令向下迁移到版本2。下面的命令将执行迁移编号大于2的所有文件的down方法。

migrate --conn "<Your Connection String>" --provider sqlserver --assembly "<Dll path of the Migration files assembly>" --task migrate:down --version 2