Come controllare se una migrazione deve essere eseguita o funzionava con migratore fluente?
-
23-12-2019 - |
Domanda
Utilizzando fluententmigrator, è lì per scoprire se la funzione Migrakeup () migrerà effettivamente qualcosa o se è già aggiornato?
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 metodoApplyMigrationUp
, 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 ilIRunnerContext
e nel tuo metodoSay
del tuo annunciatore Controllare che il parametromessage
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 unMigrationRunner
è 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
}
.