回滚到Fluent Migrator中的先前版本

jcv*_*dan 7 .net c# migration fluent-migrator

我正在尝试使用流畅的迁移器使用我的项目进行迁移.但由于缺乏文档,我正在努力弄清楚如何回滚并Down为我的迁移类调用该方法.

我使用初始版本1类设置数据库:

[Migration(1)]
public class Baseline : Migration
{
    public override void Up()
    {
        Execute.Script("1_Baseline\\baseline.sql");
    }

    public override void Down() { }
}
Run Code Online (Sandbox Code Playgroud)

我正在通过包含以下内容的批处理文件运行迁移:

"....\tools\fluentmigrator\migrate.exe" - connect"Data Source =.\ sqlexpress; Initial Catalog = ekmDomains; Integrated Security = true; multipleactiveresultsets = true;" --db SqlServer2005 --target"bin\Release\EkmDomains.Migrations.dll"

这很好用.然后我写了第二个迁移类来测试它:

[Migration(2)]
public class AddNewTable : Migration
{
    public override void Up()
    {
        Create.Table("NewTable").WithColumn("name").AsString();
    }

    public override void Down()
    {
        Delete.Table("NewTable");
    }
}
Run Code Online (Sandbox Code Playgroud)

再次运行批处理文件后,一切正常.然后,我查看了流畅的迁移器工具的命令行选项,并看到了一个--version选项.我认为回滚到以前的版本我想简单地提供--version 1DownAddNewTable将被调用.然而,这并没有发生.控制台只显示"提交事务"方法然后关闭.但该表尚未删除,版本号未更改.

我这样做的方式是错误的,还是有人能看到我这样做的一些根本缺陷?

小智 16

要向下迁移,请使用-t migrate:down.除了向下和向上,migrate.exe的帮助还列出了回滚,rollback:toversionrollback:all.