Я прочитал пару статей и вопросов, связанных с многоуровневой архитектурой в ASP.NET, однако я немного запутался после слишком большого чтения. Уровень пользовательского интерфейса разработан в ASP.NET MVC, и для доступа к данным я использую EF в своем проекте.
Я бы хотел описать мою проблему на примере. Допустим, у меня есть простой движок блога со следующими сущностями: Post, Comment, Category, User. Я использую подход базы данных EF и генерирую POCO в слое моей модели для библиотеки классов модели данных, сгенерированный текст данных и EDMX отправляются в библиотеку доступа к данным.
Над этим у меня есть бизнес-уровень. Это ответственно, например, за возврат записи в блоге с комментариями. В своем слое пользовательского интерфейса я использую классы ViewModel, потому что для отображения записи мне нужны и сущность Post, и список комментариев с именами пользователей в одном представлении.
А теперь моя проблема: моему представлению не нужны все детали сущности пользователя, только имя, чтобы отобразить сообщение. Вопрос в том, где мне сделать сопоставление между моими классами ViewModels и Model? Должен ли бизнес-уровень сделать это? Или я должен вернуть сущности с каждой детали и позволить UI обрабатывать сопоставление? Должен ли бизнес-уровень содержать ViewModels в качестве библиотеки классов?
Каков наилучший подход для этого?