回滚到FluentMigrator中的特定迁移

时间:2016-04-26 05:49:31

标签: c# sql-server fluent-nhibernate fluent fluent-migrator

假设我使用FluentMigrator创建了一个三个表,并分别给出了版本号1,2,3。现在有没有办法回滚到版本2.我的意思是回滚后我应该有表1和2但不是3。

2 个答案:

答案 0 :(得分: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 [你想要回滚的版本:即你想要的迁移作为你的最后一个]
  3. 所以在你的例子中," down 2&#34 ;,这将回滚3,你会保持1和2.

    有关Command Line Runner

    的更多信息

答案 1 :(得分:0)

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

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