回滚到Fluent Migrator中的先前版本

时间:2011-12-05 10:23:54

标签: c# .net 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() { }
    }

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

  

“.... \ tools \ fluentmigrator \ migrate.exe” - connect“数据   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");
        }
    }

再次运行批处理文件后,一切正常。然后,我查看了流畅的迁移器工具的命令行选项,并看到了--version选项。我假设要回滚到以前的版本,我只会提供--version 1并调用Down的{​​{1}}。然而,这并没有发生。控制台只显示“提交事务”方法然后关闭。但该表尚未删除,版本号未更改。

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

1 个答案:

答案 0 :(得分:16)

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