Должна ли модель представления быть агрегатом с собственным репозиторием?

StackOverflow https://stackoverflow.com/questions/695876

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top