Я никогда раньше не работал с шаблоном проектирования MVC, и недавно я начал работать над проектом с использованием ASP.NET MVC.
Я использую ActiveRecord в качестве слоя данных.
Я также использую модели представлений (уникальные для каждого вида) и AutoMapper для сопоставления моих моделей представлений с сущностями EntityFramework.
Через несколько дней, изучая MVC, EntityFramework и читая разные статьи, я придумал следующий дизайн:
В моем решении у меня есть веб-проект (Presentation Layer), который содержит виды и контроллеры.
У меня есть основной проект, в котором я определяю свои ViewModels и Services (бизнес-уровень, на котором идет вся бизнес-логика)
У меня есть проект EntityModels, в котором живут все мои сущности EF (уровень данных)
Этот дизайн позволяет мне отделить слой данных от уровня представления, веб-проект ничего не знает о проекте EntityModels и наоборот, вся логика живет на бизнес-уровне.
С моих контроллеров (после проверок валидации) я передаю viewModels на уровень Service, где выполняется сопоставление и вся необходимая бизнес-логика.
Правильно ли это оформление?
Я согласен с тем, что я прочитал, что ViewModels должны быть определены в уровне представления. Я видел примеры, где Presentation Layer имеет ссылки на уровень данных, а отображение выполняется в контроллерах (хорошая практика?). в этом случае контроллеры передают модели предметной области бизнес-уровню. У меня здесь нет никакого опыта, но он мне не нравится.
Итак, кто-нибудь может указать, где я прав, а где нет?
заранее спасибо.