Служба WCF с DataContracts VS Объект Entity Framework объекта по умолчанию
Каковы преимущества и недостатки использования службы WCF с объектом Entity Framework DataContracts VS Entity Framework?
Если я создаю Контракты с данными с помощью ADO.net Self Tracking Entity Generator, классы в моем слое данных.
Как лучше использовать его в моей службе WCF? Будет ли генерироваться созданный объектом ADO.net самопроверяемый генератор объектов ADO.net через службу или служба WCF будет по-прежнему использовать объекты инфраструктуры Entity Framework по умолчанию?
2 ответа
Основным преимуществом STE (объектов самообследования) является реализация набора изменений. Это означает, что вы можете вернуть STE из объекта изменения операции веб-службы (или целого графа объекта) и вызвать другую операцию для отправки обновленного STE обратно в веб-службу для обработки. EF автоматически обнаружит изменения в STE и обработает их.
Это невозможно с объектами Entity Framework, потому что он может отслеживать изменения, только если объект присоединен к ObjectContext
но сущность отсоединяется при возврате из операции веб-службы.
Недостаток STE заключается в том, что вам необходимо совместно использовать сборку, которая определяет их среди службы и всех клиентов. STE не для совместимых решений.
В настоящее время большинство проектов разрабатываются с субъектами третьего типа - POCO. POCO также не могут отслеживать изменения, когда отсоединены от ObjectContext
, Это особенность STEs.
Это зависит от того, какую работу вы делаете.
Использование DTO (объектов передачи данных), которые формируют ваши контракты данных и отделены от модели EF, даст вам больший контроль над тем, что сериализуется или нет. Это важно для совместимости и управления версиями с несколькими клиентами.
http://martinfowler.com/eaaCatalog/dataTransferObject.html
Использование EF с POCO, вероятно, является следующим с точки зрения контроля и разделения, когда база данных по умолчанию создается в последнюю очередь. Однако эти два способа проще в использовании и более гибкие при использовании с клиентами Silverlight.