Мне интересно, если в вашем случае DDD это хорошая идея. Я имею в виду, что форумы ориентированы на данные по своей природе. Может быть, вы должны рассмотреть самый простой подход и просто использовать классические технологии, ориентированные на данные, для запроса ваших данных. (т. е. LINQ, Hibernate, обычный SQL, инфраструктура сущностей или все, что вы хотите, в зависимости от вашей платформы)
Ваша программа, возможно, не нуждается в доменном слое, или вы в конечном итоге получите класс ForumDTO, который содержит данные, и Forum, который содержит бизнес-логику, то же самое для поста или цепочки, для меня это кажется анти-паттерном .
Что ты думаешь?
Обновление
Я рекомендую вам прочитать книгу Эрика Эванса, в ней есть замечательные примеры сложной области, в которой DDD действительно хорошо вписывается.
После прочтения этой книги я с энтузиазмом применил то, что узнал, но я видел, что какой-то подход, ориентированный на данные случая, более уместен.
Для меня почти нет сложной логики домена для форума, поэтому в конечном итоге вы получите отображение 1 <-> 1 между вашим уровнем данных и уровнем домена, это означает дублирование и издержки, как я уже сказал.
Видя описание вашего домена, ваш подход кажется ориентированным на данные.
Например, на форуме интуитивно существуют темы и темы, в которых есть сообщения, домен, как вы описываете, не отражает этого, и вы, кажется, нормализуете свою объектную модель, чтобы соответствовать схеме базы данных (которая будет нормализована).
Форум, кажется, лучший класс, чтобы быть корнем совокупности (это более интуитивно понятно)
Если вы действительно хотите использовать подход DDD, вы можете внедрить репозитории в свои сущности и дать своему доменному объекту полное имя как thread.GetLastPostOf (пользователь-пользователь), в зависимости от ваших требований.
Но я согласен с вами, когда вы говорите, что у вас должен быть репозиторий с методом GetPostById.