ASP.NET MVC + EF 4.1, слои, модели, модели представления - PullRequest
3 голосов
/ 31 октября 2011

Я прочитал пару статей и вопросов, связанных с многоуровневой архитектурой в ASP.NET, однако я немного запутался после слишком большого чтения. Уровень пользовательского интерфейса разработан в ASP.NET MVC, и для доступа к данным я использую EF в своем проекте.

Я бы хотел описать мою проблему на примере. Допустим, у меня есть простой движок блога со следующими сущностями: Post, Comment, Category, User. Я использую подход базы данных EF и генерирую POCO в слое моей модели для библиотеки классов модели данных, сгенерированный текст данных и EDMX отправляются в библиотеку доступа к данным.

Над этим у меня есть бизнес-уровень. Это ответственно, например, за возврат записи в блоге с комментариями. В своем слое пользовательского интерфейса я использую классы ViewModel, потому что для отображения записи мне нужны и сущность Post, и список комментариев с именами пользователей в одном представлении.

А теперь моя проблема: моему представлению не нужны все детали сущности пользователя, только имя, чтобы отобразить сообщение. Вопрос в том, где мне сделать сопоставление между моими классами ViewModels и Model? Должен ли бизнес-уровень сделать это? Или я должен вернуть сущности с каждой детали и позволить UI обрабатывать сопоставление? Должен ли бизнес-уровень содержать ViewModels в качестве библиотеки классов?

Каков наилучший подход для этого?

Ответы [ 2 ]

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

Вопрос в том, где мне сделать сопоставление между моими классами ViewModels и Model?

В идеале в отдельном слое сопоставления.Если вы используете AutoMapper , сопоставления могут быть объявлены в отдельных файлах в проекте ASP.NET MVC.

Должен ли это делать бизнес-уровень?

Точно нет.Бизнес-уровень не знает никаких моделей представлений.

Должен ли бизнес-уровень содержать ViewModels в качестве библиотеки классов?

Нет.Уровень пользовательского интерфейса (приложение ASP.NET MVC) является единственным уровнем, который обладает знаниями о моделях представления.Конечно, они могут быть в отдельной библиотеке классов, если хотите, но только уровень пользовательского интерфейса должен ссылаться на него.Модели представлений тесно связаны с представлениями.И представления являются частью пользовательского интерфейса.

1 голос
/ 31 октября 2011

Привет, я предпочитаю использовать ViewModel в слое пользовательского интерфейса. Я прочитал книгу Pro ASP.NET MVC 3 Framework Стивена Сандерсона. И в примерах этой книги, много примеров ViewModels, я рекомендовал прочитать эту книгу.

...