【发布时间】:2016-08-19 18:28:08
【问题描述】:
假设我使用 FluentMigrator 创建了一个三表,并分别给了它们版本号 1、2、3。现在有没有办法回滚到版本 2。我的意思是回滚后我应该有表 1 和 2,但不是 3。
【问题讨论】:
标签: c# sql-server fluent-nhibernate fluent fluent-migrator
假设我使用 FluentMigrator 创建了一个三表,并分别给了它们版本号 1、2、3。现在有没有办法回滚到版本 2。我的意思是回滚后我应该有表 1 和 2,但不是 3。
【问题讨论】:
标签: c# sql-server fluent-nhibernate fluent fluent-migrator
这是我在命令行运行工具中使用的批处理文件
@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"
然后你会使用第四个选项:如下所示
所以在您的示例中,这将是“向下 2”,这将回滚 3,您将保留 1 和 2。
【讨论】:
使用下面的命令向下迁移到版本2。下面的命令将对所有迁移次数大于2的文件执行down方法。
migrate --conn "<Your Connection String>" --provider sqlserver --assembly "<Dll path of the Migration files assembly>" --task migrate:down --version 2
【讨论】: