使用FluentMigrator,有没有办法找出MigrateUp()函数是否确实会进行迁移或者是否已经是最新版本?
使用公共API没有简单的方法可以确定MigrateUp
方法是否会执行任何操作。
但是,有多种“其他”方法可以解决此问题,这些方法取决于FluentMigrator的内部:
从MigrationRunner
派生,覆盖ApplyMigrationUp
方法,该方法在每次应用迁移时都会被调用,并跟踪/记录已应用的迁移
创建自定义的IAnnouncer
实现,在IRunnerContext
中配置FluentMigrator以使用它,并在您的播音员的方法中检查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
}