【问题标题】:Rollback to a specfic Migration in FluentMigrator回滚到 FluentMigrator 中的特定迁移
【发布时间】:2016-08-19 18:28:08
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    @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"
    

    然后你会使用第四个选项:如下所示

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

    所以在您的示例中,这将是“向下 2”,这将回滚 3,您将保留 1 和 2。

    更多关于Command Line Runner

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-21
        • 2017-10-21
        • 2017-03-18
        • 2018-01-05
        • 2011-04-08
        • 2017-02-24
        • 1970-01-01
        相关资源
        最近更新 更多