Выбор ответа Middle EF Core обновлено

Применение миграций в продакшене

Вопрос

Как безопаснее всего применять миграции EF Core к продакшен-базе?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Идемпотентный SQL-скрипт или migration bundle отдельным шагом деплоя. Отдельный шаг деплоя даёт контроль: скрипт можно проверить, выполнить один раз, с нужными правами.

Варианты ответа

  1. Идемпотентный SQL-скрипт или migration bundle отдельным шагом деплояправильный ответ
  2. Вызывать db.Database.Migrate() при старте каждого экземпляра приложения
  3. Вызывать EnsureCreated() при старте: он применит недостающие миграции
  4. Удалять базу и создавать заново при каждом релизе из последней миграции

Разбор

Отдельный шаг деплоя даёт контроль: скрипт можно проверить, выполнить один раз, с нужными правами. Migrate() при старте нескольких реплик может запустить миграции параллельно, требует прав на изменение схемы у приложения и прячет ошибки в логах старта. EnsureCreated вообще не использует миграции и несовместим с ними. Пересоздание базы уничтожит данные.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.