将 WCF 服务与 DataContracts VS 实体框架实体对象一起使用的优缺点是什么?
如果我使用 ADO.net Self Tracking Entity Generator 生成数据合同,我的数据层中的类。
在我的 WCF 服务中使用它的最佳方式是什么?datacontract 生成的 ADO.net Self Tracking Entity Generator 将通过服务交换还是 WCF 服务仍将使用默认的实体框架对象?
将 WCF 服务与 DataContracts VS 实体框架实体对象一起使用的优缺点是什么?
如果我使用 ADO.net Self Tracking Entity Generator 生成数据合同,我的数据层中的类。
在我的 WCF 服务中使用它的最佳方式是什么?datacontract 生成的 ADO.net Self Tracking Entity Generator 将通过服务交换还是 WCF 服务仍将使用默认的实体框架对象?
STE(自我跟踪实体)的主要优点是变更集的实施。这意味着您可以从 Web 服务的操作修改实体(或整个实体图)返回 STE,并调用另一个操作将更新的 STE 发布回 Web 服务进行处理。EF 会自动检测 STE 的变化并进行处理。
这对于 Entity Framework 实体是不可能的,因为它只能在实体附加到ObjectContext
但实体在从 Web 服务操作返回时分离时才可以跟踪更改。
STE 的缺点是您必须在服务和所有客户端之间共享定义它们的程序集。STE不适用于可互操作的解决方案。
目前,大多数项目都是使用第三种实体——POCO 开发的。POCO 在从ObjectContext
. 这是STE的特点。
这取决于你在做什么类型的工作。
使用 DTO(数据传输对象)形成您的数据合同并与 EF 模型分开,这将使您能够更好地控制哪些内容被序列化或不被序列化。这对于与多个客户端的兼容性和版本控制很重要。
http://martinfowler.com/eaaCatalog/dataTransferObject.html
在控制和分离方面,将 EF 与 POCO 结合使用可能是接下来使用默认数据库生成的表单。然而,当与 Silverlight 客户端一起使用时,这两个更易于使用且更灵活。