DTO в Entity Framework - PullRequest
       46

DTO в Entity Framework

3 голосов
/ 05 мая 2011

Я планирую реализовать проект NTier в EF 4. Я знаю, что сам EF создает сущности на основе таблиц, которые он отображал в базе данных. Мой вопрос: в чем польза DTO (Data Transfer Object) или он действительно нужен? Похоже, что это способствует избыточности, так как вам нужно создать еще одну сущность DTO для каждой сущности, сгенерированной EF. Пожалуйста, ведите меня. спасибо ..

Ответы [ 2 ]

9 голосов
/ 05 мая 2011

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

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

Редактировать:

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

0 голосов
/ 05 мая 2011

DTO наиболее полезны, когда вам нужно передать часть объекта или несколько объектов, связанных вместе.Кроме того, ваши сущности фактически привязаны к некоторому контексту сущности, поэтому, когда вы пропускаете сущность снаружи, они могут выполнять методы над ней, изменять данные и т. Д. Если вы просто хотите передать объект извне, в этом случае вы можете воспользоватьсяиспользуя DTO.

...