У меня есть уровень репозитория, который отвечает за мой доступ к данным, который вызывается уровнем обслуживания. Сервисный уровень возвращает DTO, которые сериализуются и отправляются по проводу. Чаще всего службы предоставляют немного больше, чем доступ к репозиторию и возвращают все возвращаемые репозитории.
Но для этого, репозиторий должен вернуть экземпляр этого DTO. В противном случае вам сначала нужно будет отобразить объект уровня данных, который репозиторий вернет в DTO на уровне службы, и вернуть его. Это просто кажется расточительным.
Кроме того, если создание DTO происходит на уровне службы, то, что могло быть сделано ранее в одном вызове репозитория и, следовательно, в одном запросе базы данных, теперь должно произойти с несколькими вызовами репозитория на уровне службы, составить "окончательный DTO. Если, конечно, я не создаю объект транспорта между уровнем данных и сервисом, который может содержать такой сложный объект. Которая затем должна быть сопоставлена с DTO. Это просто кажется расточительным ради чистоты. Но также неверно, что слой репозитория возвращает объекты, которые существуют только для отправки по проводу.