It can be argued that DTO violates DRY, but if that makes sense for your situation, then I would not think twice about it.
DRY, like most advanced programming techniques, is not a silver bullet. Sometimes you have to compromise. In this case, I would say that DRY violation is quite acceptable to prevent problems that may occur as a result of leakage of your domain data to callers who do not need it (for example, problems with N + 1 performance for lazy loading).
source share