Мой вопрос довольно прост: целесообразно ли поместить файл .edmx
в папку модели в веб-приложении проекта MVC3?
MVC3 и Entity Framework
Ответ 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 по вашему желанию.