Подходит ли Entity Framework Code First для этого сценария? - PullRequest
0 голосов
/ 11 октября 2011

У меня есть базовые знания Entity Framework 4.1 Code First, но я еще не использовал это в производственном приложении. Я нахожусь в фазе архитектуры веб-приложения и не дал никаких твердых обязательств по DAL, за исключением того, что будет использоваться Entity Framework. Я не решил, какой подход EF: Модель сначала, База данных сначала или Код сначала. Мне было интересно, насколько Code First или два других будут подходить для этого сценария. Какой из 3 подходов подойдет лучше всего?

Вот сценарий:

  • Разработчик не имеет разрешений DBO на сервере производственной базы данных. Это означает, что разработчик не может запускать свои собственные команды DDL / DML или сценарии непосредственно на сервере. Вместо этого администратор БД должен будет выполнить команды DDL / DML.
  • Ожидается, что модель изменится со временем, даже после появления базы данных. Это означает, что при использовании Code First база данных должна быть удалена. Насколько мне известно, с Code First нет никакого способа обойти это, и не существует готовых средств, о которых я знаю, с помощью платформы First First, чтобы поддерживать данные при повторном моделировании и удалении. Будет ли БД отброшена в случае базы данных первой или первой модели?

Было бы здорово, если бы у вас был опыт в подобной ситуации, такой как у меня.

1 Ответ

2 голосов
/ 11 октября 2011

Точка 1 может быть решена с помощью: разработчик пишет сценарий, разработчик передает сценарий DBA, DBA запускает сценарий:)

Точка 2:

Вам не нужно удалять базу данных вКод-первых.Обычный способ в производственном процессе - отключить инициализатор базы данных (в любом случае они в основном предназначены только для фазы разработки):

Database.SetInitializer<MyContext>(null);

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

Для подхода Database-First вы должны сделать то же самое,Я полагаю, что и для Model-First тоже, потому что сценарии, которые Model-First создает по умолчанию, начинаются с удаления существующей базы данных.Ни один из подходов не создает для вас сценарии изменений, которые только обновляют существующую схему базы данных.Они всегда создают схему с нуля.

Так что, на мой взгляд, упомянутые вами пункты не являются основанием для принятия решения за или против Code-First.

...