MVC3 и Entity Framework - PullRequest
       34

MVC3 и Entity Framework

41 голосов
/ 19 сентября 2011

Мой вопрос довольно прост: рекомендуется ли размещать файл .edmx в папке модели в веб-приложении проекта MVC3?

Ответы [ 3 ]

94 голосов
/ 19 сентября 2011

мой ответ довольно прост: не путайте уровень представления (целое приложение MVC) с логикой доступа к данным и моделированием данных.

Иметь как минимум 4 проекта в решении Visual Studio, снизу вверх:

1 - ProjectName.Interfaces (библиотека классов, интерфейсы сущностей);

2 - ProjectName.DAL (библиотека классов, единственная, которой разрешено даже знать, используется EF, сущности POCOреализовать интерфейсы проекта 1, используя другой файл, в котором вы повторно определяете те же объекты, используя частичные классы ...);

3 - ProjectName.BL (Библиотека классов, Бизнес-логика, ссылается на два проекта выше 1 и 2);

4 - ProjectName.Web (приложение ASP.NET MVC, Уровень презентации, ссылается на два проекта 1 и 3, но НЕ 2);

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

, на мой взгляд, модель MVC, модель, НЕ является моделью данныхdel, это не EF, не существует ORM, привязанного к конкретному ядру базы данных.

этот ответ, конечно, субъективен и основан на моем личном опыте; -)

9 голосов
/ 19 сентября 2011

Я полностью согласен с Davide здесь. Я просто хочу добавить, что вам также следует рассмотреть возможность использования шаблонов POCO для генерации объектов poco, а не для возврата объектов каркаса сущности на другой уровень, потому что тогда это ставит зависимость в каркас сущности.

В какой-то неизбежный момент, если вы не выделите это в отдельный проект, ваш код прямого доступа к данным в итоге будет добавлен в ваш веб-код. Я вижу это все время (и все мы когда-то были виноваты в этом)

3 голосов
/ 19 сентября 2011

Я не думаю, что это имеет большое значение.

Я использую CodeFirst, поэтому мой класс DbContext помещается в папку Model.кроме того, он мало что делает, не развертывается / не публикуется на вашем сервере и т. д. Поэтому, где он находится, не важно.Если хотите, вы можете создать для него еще одну папку EDMX или поместить ее в модель, как вы и просили.

...