¿Cómo comprobar si es necesario ejecutar una migración o si se ejecutó con fluent migrator?

StackOverflow https://stackoverflow.com//questions/22076745

  •  23-12-2019
  •  | 
  •  

Pregunta

Usando FluentMigrator, ¿hay alguna manera de saber si la función MigrateUp() realmente migrará algo o si ya está actualizada?

¿Fue útil?

Solución

No hay una manera fácil de saber usando la API pública si el MigrateUp El método hará algo o no.

Sin embargo, existen "otras" formas de solucionar este problema que dependen de las funciones internas de FluentMigrator:

  • derivar de la MigrationRunner, anular el ApplyMigrationUp método, que se llama cada vez que se aplica una migración, y rastrea/registra las migraciones aplicadas

  • Crear una costumbre IAnnouncer implementación, configure FluentMigrator para usarlo a través del IRunnerContext y en tu locutor Say método comprobar que el message El parámetro contiene el texto. "migrated" lo que significa que se ha aplicado un paso de migración.

  • Mira las migraciones pendientes antes de ejecutar MigrateUp, si puede obtener una referencia sobre un MigrationRunner puede:
    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
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top