Come controllare se una migrazione deve essere eseguita o funzionava con migratore fluente?

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

  •  23-12-2019
  •  | 
  •  

Domanda

Utilizzando fluententmigrator, è lì per scoprire se la funzione Migrakeup () migrerà effettivamente qualcosa o se è già aggiornato?

È stato utile?

Soluzione

Non c'è modo semplice da dire usando l'API pubblica se il metodo MigrateUp farà qualcosa o meno.

Tuttavia, ci sono molteplici modi "altri" attorno a questo che dipendono dagli interni del fluententmigrator:

    .
  • deriva dal MigrationRunner, sovrascrivere il metodo ApplyMigrationUp, che viene chiamato ogni volta che viene applicata una migrazione e traccia / registra le migrazioni applicate

  • Creare un'immentazione personalizzata IAnnouncer, configurare fluententMigrator per usarlo attraverso il IRunnerContext e nel tuo metodo Say del tuo annunciatore Controllare che il parametro message contiene il testo "migrated" che significa che è stato applicato un passaggio di migrazione.

  • .
  • Guarda le migrazioni in sospeso prima di eseguire MigrateUp, se è possibile ottenere un riferimento su un MigrationRunner è possibile:
    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
    }
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top