Подтвердить что ты не робот

EF Code First Migrations: MigrateDatabaseToLatestVersion без NUGET

Мне нужна помощь, чтобы прояснить, как EF Code First Migrations работает на производственной машине. У меня есть некоторые классы сущностей и класс, основанный на DbContext, для доступа к объектам. Теперь я хочу выполнить следующие действия:

  • Когда мое приложение запускается, оно должно создавать базу данных, если база данных не существует;
  • тогда схема базы данных должна быть скорректирована с учетом модели;
  • Если база данных была создана только сейчас, я хочу создать некоторые индексы,
  • также, если база данных была создана только сейчас, она должна быть засеяна некоторыми исходными данными;
  • все эти вещи должны выполняться автоматически, без каких-либо команд NUGET или внешних инструментов.

Я прочитал несколько статей о миграции, но они сосредоточены главным образом на использовании NUGET или чистых автоматических обновлениях баз данных во время выполнения (через MigrateDatabaseToLatestVersion). Я знаю класс DbMigration, но я не могу понять, как склеить стратегию MigrateDatabaseToLatestVersion и DbMigration.

UPDATE.
На самом деле, я не могу использовать NUGET в проекте, и мне нужно сделать миграцию "вручную".

4b9b3361

Ответ 1

Просто используйте MigrateDatabaseToLatestVersion.

когда мое приложение запускается, оно должно создавать базу данных, если база данных не существует;

MigrateDatabaseToLatestVersion сделает это

тогда схема базы данных должна быть скорректирована для модели;

MigrateDatabaseToLatestVersion сделает это

Если база данных была создана только сейчас, я хочу создать некоторые индексы,

Создайте начальную миграцию на основе кода для вашей базы данных и метод Sql в методе Up для определения всех необходимых индексов.

также, если база данных была создана только сейчас, она должна быть засеяна некоторыми исходными данными;

Снова используйте Sql в начальной миграции или Seed в конфигурации миграции

все эти вещи должны выполняться автоматически, без каких-либо команд NUGET или внешних инструментов

NuGet и команды помогут вам подготовить его во время разработки (но вы можете просто ссылаться на необходимые сборки и сами писать весь код). Runtime не требует каких-либо команд powershell.

DbMigrator предназначен для сценариев, в которых вы не хотите использовать MigrateDatabaseToLatestVersion, и вы хотите управлять миграцией из своего кода.