ソリューション1)
チェック:
var migrator = new DbMigrator(new DbMigrationsConfiguration());
// If any migration is required then Count will be greater than 0
// 0 means no migration required
if (migrator.GetPendingMigrations().Count() > 0)
{
// Fire your event here!
}
Soultion 2) あなたがイベントを必要としないこのユースケースでは、進捗状況をログに記録するログデコレータを使用してください。
public class MyLogger : System.Data.Entity.Migrations.Infrastructure.MigrationsLogger
{
public override void Info(string message)
{
// Short status messages come here
}
public override void Verbose(string message)
{
// The SQL text and other info comes here
}
public override void Warning(string message)
{
// Warnings and other bad messages come here
}
}
が最新バージョンに移行するには、そのようにそれを呼び出す必要があり:
DbMigrator migrator = new DbMigrator(new MyConfiguration());
MigratorLoggingDecorator logger = new MigratorLoggingDecorator(migrator, new MyLogger());
// This line will call the migration + logging
logger.Update();
追加情報:
MyMigratorLoggingDecorator: MigratorLoggingDecorator {
internal override Upgrade(IEnumerable<string> pendingMigrations, string targetMigrationId, string lastMigrationId)
{
// Fire your event here!
base.Upgrade(..)
}
..}
:
あなたはそのようなカスタムMigratorLoggingDecoratorのdecroatorを作成することができます
これはあなたが探しているものではありませんが、iを含む '[dbo]。[MigrationHistory]'テーブルがありますデータベースに適用されたすべての移行に関する情報。 –
はい、わかりましたが、移行のタイムスタンプに関する情報は(たとえば)含まれていません。 EFがそれを発生させると、移行を記録する必要があります –