使用FluentMigrator,有没有办法找出MigrateUp()函数是否确实会迁移某些东西或者它是否已经是最新的?
答案 0 :(得分:11)
使用公共API无法轻易告诉MigrateUp
方法是否会做某事。
然而,有多种“其他”方式依赖于FluentMigrator的内部:
从MigrationRunner
派生,覆盖ApplyMigrationUp
方法,每次应用迁移时都会调用该方法,并跟踪/记录应用的迁移
创建自定义IAnnouncer
实施,配置FluentMigrator以通过IRunnerContext
和播音员Say
方法使用它,检查message
参数是否包含文字"migrated"
表示已应用迁移步骤。
MigrateUp
之前查看待处理的迁移,如果您可以MigrationRunner
获得参考,则可以: MigrationRunner runner = ... // get a reference to the runner
if (runner.MigrationLoader.LoadMigrations() // get all the migrations
.Any(pair => !runner.VersionLoader
.VersionInfo.HasAppliedMigration(pair.Key)))
// check which migrations have been applied
{
// there are pending migrations, do your logic here
}