Служба WCF с DataContracts VS Объект сущностей Entity Framework по умолчанию

Каковы плюсы и минусы использования службы WCF с DataContracts VS Entity Framework Entities Object?

Если я создаю контракты данных с помощью ADO.net Self Tracking Entity Generator, классы на моем уровне данных.

Как лучше всего использовать его в моей службе WCF? Будет ли создан контракт данных, созданный ADO.net Self Tracking Entity Generator, через службу, или служба WCF по-прежнему будет использовать объекты инфраструктуры Entity по умолчанию?


person Shailender Singh    schedule 07.02.2011    source источник


Ответы (2)


Основным преимуществом STE (Self-tracking entity) является реализация набора изменений. Это означает, что вы можете вернуть STE из операции изменения объекта веб-службы (или всего графа объекта) и вызвать другую операцию, чтобы отправить обновленный STE обратно в веб-службу для обработки. EF автоматически обнаружит изменения в STE и обработает их.

Это невозможно с сущностями Entity Framework, поскольку он может отслеживать изменения только в том случае, если сущность присоединена к ObjectContext, но сущность отключается при возврате из операции веб-службы.

Недостатком STE является то, что вам нужно использовать сборку, которая определяет их, среди службы и всех клиентов. STE не предназначены для совместимых решений.

В настоящее время большинство проектов разрабатывается с использованием объектов третьего типа - POCO . POCO также не могут отслеживать изменения при отсоединении от ObjectContext. Это особенность СТЭ.

person Ladislav Mrnka    schedule 07.02.2011
comment
Похоже, мне придется копаться в POCO'A - person Shailender Singh; 07.02.2011

Это зависит от того, какую работу вы выполняете.

Использование DTO (объектов передачи данных), которые формируют ваши контракты данных и отделены от модели EF, даст вам больше контроля над тем, что будет сериализовано, а что нет. Это важно для совместимости и управления версиями с несколькими клиентами.

http://martinfowler.com/eaaCatalog/dataTransferObject.html

Использование EF с POCO, вероятно, является следующим с точки зрения управления и разделения с последней сгенерированной формой базы данных по умолчанию. Однако эти два варианта проще в использовании и более гибкие при использовании с клиентами Silverlight.

person JTew    schedule 07.02.2011
comment
спасибо Jtew, я посмотрю в POCO и посмотрю, сработает ли это для меня. - person Shailender Singh; 07.02.2011