DDD - Репозиторий для каждой сущности или один для всего?

Во-первых, вероятно, нет правильного ответа, но я уверен, что есть люди, которые знают больше меня и смогут помочь.

У меня есть 3 объекта: Пользователь, Блог, Сообщение.

В системе может быть любое количество пользователей.

Пользователь может иметь любое количество блогов, но в каждом блоге есть только один пользователь.

В блоге может быть столько сообщений, сколько разместит пользователь, и все сообщения будут от того же пользователя, который владеет блогом (т.е. если Джон владеет блогом Food, только Джон может публиковать сообщения в этом блоге). И, конечно же, у каждого поста есть родительский блог.

Затем у меня есть страница профиля пользователя, на которой я хочу отобразить все сведения о пользователе, имена всех его блогов и последние 5 сообщений.

У меня есть страница блога, которая отображает подробную информацию о блоге, имя владельца (пользователя) и заголовки всех сообщений.

Затем у меня есть страница сообщений, на которой отображаются детали сообщения, имя блога и имя владельца.

Как вы видите, у меня есть отношения между всеми ними, но ни одно из них не может действовать как совокупность.

Определить сущности в коде не так уж и сложно, у меня проблемы с определением репозиториев. Сколько мне нужно? 3 - по одному на каждую сущность? 1 - за все? Как мне выполнить поиск?

Например, чтобы получить 5 последних сообщений на странице пользователя. Пользователь не имеет ссылки на сообщения, вместо этого он содержит контейнер блогов, где каждый блог, в свою очередь, содержит контейнер сообщений. Должен ли я иметь в моем репозитории метод, принимающий UserID и возвращающий список сообщений? Или, может быть, это должен быть Сервис? Кроме того, я обычно не загружаю все данные, а вместо этого использую ленивую загрузку. Получая существующий объект User, я бы не загружал его блоги, если они не нужны (при первом доступе).

Заранее спасибо.

7
задан Dmitry Kudryavtsev 20 February 2012 в 11:51
поделиться