Должна ли модель для представления быть агрегатом с собственным репозиторием? - PullRequest
0 голосов
/ 30 марта 2009

Если модель, которая будет передана в представление, будет полностью определена одним вызовом одного репозитория. Другими словами, является ли Модель одним Агрегатом или моя Модель должна быть построена из отдельных Агрегатов, каждый со своим собственным Репозиторием, на уровне обслуживания?

То, как у меня сейчас получается, я просто вызываю один репозиторий, чтобы заполнить всю модель, которая затем представляется View. Похоже, что агрегаты, репозитории и модели становятся одной концепцией.

1 Ответ

2 голосов
/ 30 марта 2009

Мой, что для "Ничего из вышеперечисленного". Я предпочитаю использовать модели представления для представлений, а модели представления не нуждаются в репозитории. Для этого есть множество причин:

  • Использование моделей презентации позволяет проектировать представления и контроллеры до проектирования модели и базы данных. Таким образом, вы можете получить пользовательский ввод рано.
  • Модели презентаций позволяют передавать довольно «плоскую» модель в представление, поэтому вам не нужно беспокоиться о проблемах ORM, таких как отложенная загрузка.
  • Презентационные модели часто упрощают привязку моделей.
  • При использовании модели презентации вам не нужно беспокоиться о случайном возврате полей, которые не должен быть виден определенному пользователю, или о случайном обновлении полей, которые пользователь не должен обновлять, поскольку вы не получили белый список правильный.

Теперь, более конкретно, следуя строке вашего вопроса: вы создали экземпляр модели презентации? Сколько репозиториев нужно? Ну, этот вопрос сейчас почти отвечает сам. Вы разрабатываете модель представления в соответствии с требованиями представления. Вы проектируете репозитории в соответствии с хорошими практиками TDD, включая идентификацию совокупных корней. Теперь вопрос о том, «сколько репозиториев мне нужно, чтобы создать экземпляр этой модели», прост. Вы изучаете совокупные корни, требуемые моделью, и используете те, которые вам нужны. Как правило, я могу сделать это в одном запросе LINQ.

...