Wie kann ich überprüfen, ob eine Migration durchgeführt werden muss oder mit Fluent Migrator durchgeführt wurde?

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

  •  23-12-2019
  •  | 
  •  

Frage

Gibt es mit FluentMigrator eine Möglichkeit herauszufinden, ob die Funktion MigrateUp() tatsächlich etwas migriert oder ob es bereits auf dem neuesten Stand ist?

War es hilfreich?

Lösung

Es gibt keine einfache Möglichkeit, mithilfe der öffentlichen API festzustellen, ob die MigrateUp Methode wird etwas bewirken oder nicht.

Es gibt jedoch mehrere „andere“ Möglichkeiten, dies zu umgehen, die von den Interna von FluentMigrator abhängen:

  • Ableiten von MigrationRunner, überschreiben Sie die ApplyMigrationUp Methode, die jedes Mal aufgerufen wird, wenn eine Migration angewendet wird, und verfolgt/protokolliert die angewendeten Migrationen

  • Erstellen Sie eine benutzerdefinierte IAnnouncer Konfigurieren Sie FluentMigrator so, dass es über die Implementierung verwendet wird IRunnerContext und in Ihrem Ansager Say Methode überprüfen, ob die message Parameter enthält den Text "migrated" Dies bedeutet, dass ein Migrationsschritt angewendet wurde.

  • Sehen Sie sich vor der Ausführung die ausstehenden Migrationen an MigrateUp, wenn Sie eine Referenz zu einem bekommen können MigrationRunner du kannst:
    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
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top