Como verificar se uma migração precisa ser executado ou não executar com a fluente migrator?

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

  •  23-12-2019
  •  | 
  •  

Pergunta

Usando FluentMigrator, existe maneira de saber se o MigrateUp() função, de facto, irá migrar algo ou se ele já está atualizado?

Foi útil?

Solução

Não há nenhuma maneira fácil de dizer, usando a api pública se o MigrateUp método irá fazer algo ou não.

No entanto, existem várias "outras" formas de se contornar isso que dependem do funcionamento do FluentMigrator:

  • Derivam da MigrationRunner, substituir o ApplyMigrationUp o método, que é chamado cada vez que uma migração é aplicado, e a faixa/log aplicada migrações

  • Criar um personalizado IAnnouncer implementação, configurar FluentMigrator para usá-lo através do IRunnerContext e em seu locutor Say método de seleção que o message parâmetro contém o texto "migrated" o que significa uma etapa da migração tem sido aplicada.

  • Olhar para o pendente migrações antes de executar MigrateUp, se você pode obter uma referência em um MigrationRunner você pode:
    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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top