Путаница в EF Auto Миграции и посев - посев при каждом запуске программы

Я недавно изменил приложение с использованием следующего для dev:

DropCreateDatabaseIfModelChanges<Context>


Для использования:

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


 В моем контексте БД у меня есть:

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

Я переопределил Seed (context) в DbMigrationsConfiguration, используя расширение AddOrUpdate, где я только что использовал Add ранее с заполнением в db (DropCreateDatabaseIfModelChanges).

Я путаюсь с тем, что миграция запускается при каждом запуске приложения, независимо от того, есть ли какие-либо изменения в DbContext. Каждый раз, когда я запускаю приложение (библиотека запускается через службу), инициализатор работает так же, как и Seed. Мое ожидаемое поведение - это проверка необходимости миграции (за кулисами, чтобы проверить, соответствует ли модель физическим базам данных), затем обновить все новые / удаленные таблицы / столбцы и запускать seed, только если что-то изменилось.

В моем тестировании семя запускается каждый раз, что выполнимо, но, на первый взгляд, неэффективно и не соответствует ожиданиям. К сожалению, документация MSDN довольно ограничена.

Я полностью неправильно использую MigrateDatabaseToLatestVersion? Есть ли какой-нибудь способ получить ожидаемое поведение (то есть, только начальное, если есть изменение модели), или я должен просто изменить мой начальный метод, чтобы он запускался при каждом запуске приложения?

Ответы на вопрос(3)

Ваш ответ на вопрос