DTO используется для передачи данных между слоями / уровнями. Для этой цели ему не нужны никакие методы, а иногда даже не должно быть никаких методов - например, когда DTO предоставляется через веб-сервис.
Бизнес-объект - это умный объект, который содержит данные и методы, которые выполняют операции (изменяют данные) над этим объектом. Когда вы открываете BO для верхнего уровня, он может вызывать публичные методы вашего объекта. Иногда вы этого не хотите, и по этой причине вы создаете DTO, который предлагает только данные, но не методы.
DTO не должен транспортировать все данные BO. Когда вы следуете строгому DTO-подходу, вы создаете конкретные DTO для каждой операции, представленной на вашем бизнес-уровне. Например, если у вашего объекта есть данные аудита, такие как CreatedBy, ModifiedBy, CreatedDate и т. Д., И вы создаете метод Update, ваш входящий DTO (с обновленным объектом) не должен иметь эти свойства, поскольку верхний уровень не может их изменять - только бизнес-логика .