Согласно этому сообщению в блоге, большинство компаний, использующих EF Migrations, предположительно не обновляют схему базы данных производственных баз данных с миграциями EF. Вместо этого автор сообщения в блоге рекомендует использовать сценарии обновления схемы как часть процесса развертывания.
Я использовал сценарии обновления Schema в течение нескольких лет, и пока они работают, я планировал использовать EF-миграции вместо этого в будущем по следующим причинам:
- Более быстрое развертывание, меньшее время простоя
- Простейшая процедура развертывания
- Гораздо проще переносить существующие данные, чем это было бы возможно с помощью T-SQL
- Более понятный синтаксис изменений, ожидающих применения (класс DbMigration с чистым синтаксисом С# или неуклюжей миграцией T-SQL script в традиционной среде).
- Существует простой и быстрый путь перехода к старой схеме db, если развертывание новой версии программного обеспечения должно завершиться неудачно.
Одна из причин, по которой я могу думать, что запретить использование EF для миграции производственной БД, будет заключаться в том, что DB-схема была изменена только администраторами баз данных, а не разработчиками. Тем не менее, я и DBA, и разработчик, поэтому в моем случае это не имеет значения.
Итак, каковы риски обновления производственной базы данных с использованием EF?
Изменить: я хотел бы добавить, что, как уже сказал solomon8718, я всегда вытаскиваю новую копию производственной базы данных на мой промежуточный сервер и тестирую EF Migrations для применения на промежуточном сервере, прежде чем применять их к производству сервер. IMO это важно для любого обновления схемы для производственной системы, независимо от того, использую ли я миграции EF или нет.