DTO - это объект передачи данных, используемый для передачи только необходимых данных между физическими уровнями (когда уровни находятся в других процессах или на других серверах).Если вам нужно указать только имя и возраст человека, вам не нужно передавать его адрес, место работы, детей и т. Д. Поэтому вы создадите простой транспортный объект, который будет содержать только имя и возраст.
EF создастобъекты, которые отображают записи базы данных в свойствах.Сущность EF также может быть расширена (частичными классами) до объекта полного домена с пользовательскими вычисляемыми свойствами и методами.Доменные объекты не должны напрямую подвергаться воздействию другого уровня, и это другой случай, когда используются DTO.
Редактировать:
Последняя ситуация, в которой используются DTO, - это оптимизация трансграничных вызовов.Если у вас есть многоуровневое приложение, в котором один уровень вызывает методы на другом уровне за границей процесса, вы должны минимизировать эти вызовы, поскольку они снижают производительность (являются медленными).Для этого вы можете создать специальные DTO, передающие сложные структуры данных (несколько сущностей) в некоторую основную операцию (фасад) на удаленном уровне, которая в дальнейшем будет использовать данные для выполнения нескольких бизнес-операций.