2011-12-05 36 views
5

我正在尝试使用流利的迁移器来获得与我的项目一起工作的迁移。但由于缺少文档,我正在努力想出如何回滚并为我的迁移类调用Down方法。在Fluent Migrator中回滚到以前的版本

我成立了DB与最初版本1类:

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

     public override void Down() { } 
    } 

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

” .... \工具\ fluentmigrator \ migrate.exe“--connection”Data Source =。\ sqlexpress; Initial Catalog = ekmDomains; Integrated Security = true; multipleactiveresultsets = true;“ --db SQLServer2005的 --target “BIN \发布\ 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 1Down即可调用AddNewTable。但是,这并没有发生。控制台只显示“提交事务”方法,然后关闭。但该表尚未被删除,版本号未更改。

我是这样做的错误方式或任何人都可以看到我如何做这件事的一些根本缺陷?

回答

15

要迁移下来,请使用“-t migrate:down”。除此之外,对于migrate.exe的帮助还列出了回滚,回滚:toversion和rollback:all。

+0

欢呼的队友,不敢相信我错过了! rtfm ftw – jcvandan