Во-первых, вероятно, нет правильного ответа, но я уверен, что есть люди, которые знают больше меня и смогут помочь.
У меня есть 3 объекта: Пользователь, Блог, Сообщение.
В системе может быть любое количество пользователей.
Пользователь может иметь любое количество блогов, но в каждом блоге есть только один пользователь.
В блоге может быть столько сообщений, сколько разместит пользователь, и все сообщения будут от того же пользователя, который владеет блогом (т.е. если Джон владеет блогом Food, только Джон может публиковать сообщения в этом блоге). И, конечно же, у каждого поста есть родительский блог.
Затем у меня есть страница профиля пользователя, на которой я хочу отобразить все сведения о пользователе, имена всех его блогов и последние 5 сообщений.
У меня есть страница блога, которая отображает подробную информацию о блоге, имя владельца (пользователя) и заголовки всех сообщений.
Затем у меня есть страница сообщений, на которой отображаются детали сообщения, имя блога и имя владельца.
Как вы видите, у меня есть отношения между всеми ними, но ни одно из них не может действовать как совокупность.
Определить сущности в коде не так уж и сложно, у меня проблемы с определением репозиториев. Сколько мне нужно? 3 - по одному на каждую сущность? 1 - за все? Как мне выполнить поиск?
Например, чтобы получить 5 последних сообщений на странице пользователя. Пользователь не имеет ссылки на сообщения, вместо этого он содержит контейнер блогов, где каждый блог, в свою очередь, содержит контейнер сообщений. Должен ли я иметь в моем репозитории метод, принимающий UserID и возвращающий список сообщений? Или, может быть, это должен быть Сервис? Кроме того, я обычно не загружаю все данные, а вместо этого использую ленивую загрузку. Получая существующий объект User, я бы не загружал его блоги, если они не нужны (при первом доступе).
Заранее спасибо.