Но даже если вы, кажется, не используете ORM, вам, вероятно, придется заполнять свои сущности из ваших SQL-запросов, и ваши сущности должны каким-то образом связываться друг с другом (коллекции, свойства навигации и т. Д.).Если в вашем домене есть объекты, которые не связаны между собой, я бы не назвал это DDD, поскольку у вас нет таких важных компонентов, как агрегаты, объекты значений, двунаправленные / однонаправленные отношения.Но что я знаю :-) Может быть, вы хорошо сделали свою головоломку, и эта последняя часть состоит в том, чтобы объединить сущности в «представление», которое может быть полезно для ваших клиентов.
Поскольку репозитории обычно работают в совокупности,В качестве корневого объекта вы можете использовать методы репозитория, такие как ListBooksByAuthor (BookRepository) или ListAuthors (AuthorRepository).
Если вы хотите отобразить сложные данные из разных агрегатов на веб-странице, я рекомендую использовать объекты передачи данных.Пусть этот объект DTO будет уникальным для этой страницы или варианта использования и будет «представлением», которое отображает все (или большую часть) данные, которые нужны веб-странице.Я также рекомендую НЕ использовать DTO везде, если вы не используете веб-сервисы.Совместное использование DTO дает как плюсы, так и минусы.Вместе с сервисным уровнем он дает вам собственный антикоррупционный уровень, а также дает вам возможность внедрить репозиторий Book и Author.Затем из сервисного уровня вы можете собирать и собирать DTO (посмотрите на AutoMApper или подобное ... вам очень поможет).НО многие DTO повсюду также дают вам накладные расходы на обслуживание приложения.Это добавляет еще один слой для поддержки.Я предпочитаю просто использовать его для определенных клиентов / веб-страниц.
Я надеюсь, вы понимаете, что я пытаюсь объяснить: -)