Репозиторий DDD должен включать в себя технические аспекты доступа к данным:
Определение: репозиторий - это механизм инкапсуляции хранилища,
поиск и поведение поиска, эмулирующее коллекцию объектов.
Он также отвечает за обработку объектов домена в середине и в конце срока службы. Интерфейс репозитория принадлежит домену и должен быть максимально основан на Ubiquitous Language . В дополнение к книге DDD, эти две статьи охватывают почти все, что вам нужно знать при разработке репозиториев:
Предоставление IQueryable в интерфейсе репозитория, на мой взгляд, не оптимально. IQueryable не является частью вездесущего языка. Это техническая составляющая, она не имеет никакого предметного значения. Вместо того, чтобы инкапсулировать извлечение данных, в репозитории был бы открыт доступ к механизму доступа к данным, который, в сущности, не оправдывает цель иметь в первую очередь репозиторий.
Относительно ASP.NET. Это структура пользовательского интерфейса. Почему вы позволяете структуре пользовательского интерфейса влиять на дизайн вашей доменной модели? Примеры Microsoft часто поощряют такие вещи, как сетка данных пользовательского интерфейса, привязанная непосредственно к таблицам вашей базы данных. Или, совсем недавно, элементы управления, связанные с так называемой моделью домена, в то время как на самом деле это Анемичная модель , или просто тупой контейнер данных с get / sets. Цитата из статьи, которую вы упоминаете (я выделил немного):
Привязка модели - это ориентированный на код подход к привязке данных . Это позволяет
вам написать CRUD вспомогательные методы в файле code-behind вашего
страницы, а затем легко подключить их к любым серверным элементам управления в пределах
стр. Затем серверные элементы управления позаботятся о вызове методов.
в соответствующее время в жизненном цикле страницы и привязка данных .
Моя интерпретация этого заключается в том, чтобы отказаться от модели и объектов и просто связать ваши данные с пользовательским интерфейсом. Это, вероятно, правильный и оправданный подход во многих случаях. Но поскольку вопрос был помечен как DDD, я бы сказал, что в DDD это называется Smart UI Anti-Pattern .