Решение 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();
Дополнительно:
Вы можете создать свой собственный MigratorLoggingDecorator decroator подобное:
MyMigratorLoggingDecorator: MigratorLoggingDecorator {
internal override Upgrade(IEnumerable<string> pendingMigrations, string targetMigrationId, string lastMigrationId)
{
// Fire your event here!
base.Upgrade(..)
}
..}
Это не то, что вы ищете, но есть таблица '[dbo]. [__ MigrationHistory]', которая содержит i nformation о всех миграциях, которые были применены к базе данных. –
Да, я знаю, но он не содержит (например) информацию о временной отметке миграции. Мне нужно регистрировать миграцию, поскольку EF запускает ее –