Confusão sobre as migrações automáticas da EF e semeadura - semeando cada início de programa

Eu recentemente mudou um aplicativo de usar o seguinte para dev:

DropCreateDatabaseIfModelChanges<Context>


Para usar:

public class MyDbMigrationsConfiguration: DbMigrationsConfiguration<GrsEntities>
{
    public MyDbMigrationsConfiguration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }
}


No meu contexto de banco de dados, tenho:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    // Tell Code First to ignore PluralizingTableName convention
    // If you keep this convention then the generated tables will have pluralized names.
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

    //set the initializer to migration
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<GrsEntities, MigrationConfig>());
}

Eu substituí Seed (contexto) em DbMigrationsConfiguration usando a extensão AddOrUpdate onde eu estava usando apenas o Add before com a propagação no drop db (DropCreateDatabaseIfModelChanges).

Minha confusão é que a migração é executada a cada início do aplicativo, independentemente de haver qualquer alteração no DbContext. Toda vez que eu inicio o aplicativo (a biblioteca é executada através de um serviço), o inicializador é executado, assim como o Seed. Meu comportamento esperado é uma verificação se uma migração é necessária (nos bastidores, verifique se o modelo corresponde ao banco de dados físico) e atualize as tabelas / colunas novas / removidas e só execute a semente se algo tiver mudado.

Na minha semente de teste é executado a cada vez, o que é viável, mas aparentemente ineficiente e não era o que eu esperava. Infelizmente, a documentação do MSDN é bastante limitada.

Estou usando completamente o MigrateDatabaseToLatestVersion? Existe alguma maneira de obter o comportamento que eu espero (ou seja, somente semente se houver uma mudança de modelo) ou devo apenas alterar meu método de semente para esperar que seja executado cada inicialização do aplicativo?

questionAnswers(3)

yourAnswerToTheQuestion