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();
}
が、私は単にこのような何かを行う必要があります。ここでは
は、私が使用しています移行コードでありますこれを内部的に行う。