Это зависит от размера / сложности вашего приложения. Предоставление объекта возможно, но это может вызвать некоторые проблемы с сериализацией при транспортировке всего графа объекта (объекта с его отношением). Эти проблемы обычно решаются путем маркировки сущностей с атрибутами DataContract
и DataMember
(используется по умолчанию, если вы используете EFv1 или генерирование сущности по умолчанию в EFv4 = нет шаблонов T4).
Второй описанный вами подход рекомендуется, если вы хотите следовать чистой архитектуре и хорошему разделению задач, но это сделает ваше приложение более сложным (другой уровень объектов, преобразований и т. Д.). Структуры или классы, созданные для передачи данных, обычно называются DTO (объектами передачи данных).
Объекты передачи данных позволяют передавать только необходимое подмножество данных, необходимых для объекта. Если, например, у вас есть некоторые инфраструктурные свойства в сущности (например, CreatedAt, CreatedBy), вы не захотите, чтобы клиент устанавливал эти свойства, потому что служба устанавливает их. Из-за этого нет необходимости разрешать клиенту передавать их. Не раскрывая эти свойства в DTO, вы проясните это.