Выбор ответа Middle EF Core обновлено
Применение миграций в продакшене
Вопрос
Как безопаснее всего применять миграции EF Core к продакшен-базе?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Идемпотентный SQL-скрипт или migration bundle отдельным шагом деплоя. Отдельный шаг деплоя даёт контроль: скрипт можно проверить, выполнить один раз, с нужными правами.
Варианты ответа
- Идемпотентный SQL-скрипт или migration bundle отдельным шагом деплояправильный ответ
- Вызывать
db.Database.Migrate()при старте каждого экземпляра приложения - Вызывать
EnsureCreated()при старте: он применит недостающие миграции - Удалять базу и создавать заново при каждом релизе из последней миграции
Разбор
Отдельный шаг деплоя даёт контроль: скрипт можно проверить, выполнить один раз, с нужными правами. Migrate() при старте нескольких реплик может запустить миграции параллельно, требует прав на изменение схемы у приложения и прячет ошибки в логах старта. EnsureCreated вообще не использует миграции и несовместим с ними. Пересоздание базы уничтожит данные.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.