带有DataContracts的WCF服务VS默认实体框架实体对象

时间:2011-02-07 18:40:13

标签: wcf entity-framework-4 self-tracking-entities

使用带有DataContracts VS实体框架实体对象的WCF服务有哪些优缺点?

如果我使用ADO.net自我跟踪实体生成器生成数据合同我的数据层中的类。

在我的WCF服务中使用它的最佳方法是什么? 数据合成生成的ADO.net自我跟踪实体生成器是否会通过服务或WCF服务来实现,仍将使用默认的实体框架对象?

2 个答案:

答案 0 :(得分:1)

STE(自跟踪实体)的主要优点是变更集的实现。这意味着您可以从Web服务的操作修改实体(或整个实体图形)返回STE,并调用另一个操作将更新的STE发布回Web服务进行处理。 EF将自动检测STE的变化并处理它们。

对于Entity Framework实体,这是不可能的,因为它只能在实体附加到ObjectContext时才跟踪更改,但是当从Web服务操作返回时实体已分离。

STE的缺点是你必须共享程序集,它在服务和所有客户端之间定义它们。 STE are not for interoperable解决方案。

目前大多数项目都是使用第三类实体开发的 - POCOs。从ObjectContext分离时,POCO也无法跟踪更改。这是STEs的特色。

答案 1 :(得分:0)

这取决于您正在做什么类型的工作。

使用构成数据合约的DTO(数据传输对象)并与EF模型分开,可以让您更好地控制序列化的内容。这对于与多个客户端的兼容性和版本控制非常重要。

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

将EF与POCO一起使用可能是控制和分离的最后一个方面。但是,当与Silverlight客户端一起使用时,这两个更容易使用,也更灵活。