我刚开始尝试FluentMigrator。我注意到失败的迁移没有被回滚。这还没有实施吗?这似乎很糟糕,因为它使数据库处于损坏状态。
例如,下面的迁移在第二次尝试添加 Table1 时显然会失败(我这样做只是为了强制出错)。我希望迁移包含在事务中,然后在失败时回滚。
[Migration(1)]
public class AddTable : Migration
{
public override void Up()
{
Create.Table("Table1").WithIdColumn();
Create.Table("Table1").WithIdColumn();
}
public override void Down()
{
Delete.Table("Table1");
}
}
然而,实际上发生的是运行程序抛出一个错误(这会导致控制台应用程序崩溃)并且数据库留下了创建的 Table1 并且 VersionInfo 表中没有行。这似乎是一个糟糕的状态。
使用最新的 FluentMigrator 代码(截至今天)、Visual Studio 2008 并针对 SQL Server 2008 Express。