2016-06-27 24 views
3

私はEntity Framework 6でカスタムIDatabaseInitializerを持っていて、奇妙なことに気付きました。 DbMigrator.Updateメソッドを呼び出すと、移行がトランザクションに失敗した場合、トランザクションはロールバックされず、データベースはダウングレードできなくなる不整合な状態になります。 DbMigratorがない理由を私は理解したようDbMigratorがロールバックされない

using (var trx = context.Database.BeginTransaction()) 
{ 
    try 
    { 
     var migrator = new DbMigrator(_configuration); 

     var pendingMigrations = migrator.GetPendingMigrations(); 

     if (migrator.GetPendingMigrations().Any()) 
     { 
      migrator.Update(); 
     } 
    trx.Commit(); 
    }catch 
    { 
     trx.Rollback(); 
     throw; 
    } 
} 

が、これは動作するはずです、ちょうどカントフィギュア:

var migrator = new DbMigrator(_configuration); 

var pendingMigrations = migrator.GetPendingMigrations(); 

if (migrator.GetPendingMigrations().Any()) 
{ 
    migrator.Update(); 
} 

が、私は単にこのような何かを行う必要があります。ここでは

は、私が使用しています移行コードでありますこれを内部的に行う。

答えて

関連する問題