FluentMigratorの実験を始めたところです。失敗した移行がロールバックされていないことに気付きました。これはまだ実装されていないだけですか?データベースが壊れた状態のままになるため、これはかなり悪いようです。
たとえば、以下の移行は、Table1 を 2 回目に追加しようとすると明らかに失敗します (エラーを強制するためにこれを行っているだけです)。移行が失敗したときにロールバックされるトランザクションに含まれることを期待します。
[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 に対抗します。