我正在尝试使用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" --connection "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");
}
}
运行批处理文件后,一切正常。然后我查看了fluent migrator工具的命令行选项,并看到了一个--version
选项。我以为要回滚到先前的版本,只需提供--version 1
,然后就会调用AddNewTable
的Down
方法。然而,这并没有发生。控制台只是显示了一个“提交事务”方法然后关闭了。但表格没有被删除,版本号也没有改变。
我做错了吗?或者有人能看出我做法中的一些根本性缺陷吗?