Подтвердить что ты не робот

MVC3 и Entity Framework

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

4b9b3361

Ответ 1

мой ответ довольно прост, не испортите слой презентации (всего приложения 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);

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

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

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

Ответ 2

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

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

Ответ 3

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

Я использую CodeFirst, поэтому мой класс DbContext переходит в папку Model.

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