Confusión sobre las migraciones automáticas de EF y siembras: iniciando cada inicio de programa

Recientemente cambié una aplicación de usar lo siguiente para dev:

DropCreateDatabaseIfModelChanges<Context>


Para utilizar:

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


En mi contexto db tengo:

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>());
}

He anulado Seed (context) en DbMigrationsConfiguration usando la extensión AddOrUpdate donde solo estaba usando Add antes de sembrar en la base de datos drop (DropCreateDatabaseIfModelChanges).

Mi confusión es que la migración se ejecuta con cada inicio de la aplicación, independientemente de que haya cambios en el DbContext. Cada vez que inicio la aplicación (la biblioteca se ejecuta a través de un servicio), el inicializador se ejecuta igual que la semilla. Mi comportamiento esperado es una verificación de si es necesaria una migración (entre bambalinas para ver si el modelo coincide con la base de datos física), luego actualice las tablas / columnas nuevas / eliminadas y solo ejecute el valor inicial si algo ha cambiado.

En mi prueba, la semilla se ejecuta cada vez, lo cual es viable pero aparentemente ineficiente y no fue lo que esperaba. Desafortunadamente, la documentación de MSDN es bastante limitada.

¿Estoy abusando completamente de MigrateDatabaseToLatestVersion? ¿Hay alguna forma de obtener el comportamiento que espero (es decir, solo semilla si hay un cambio de modelo) o debo cambiar mi método de semilla para esperar que se ejecute cada lanzamiento de la aplicación?

Respuestas a la pregunta(3)

Su respuesta a la pregunta