【问题标题】:WCF Service with DataContracts VS Default Entity Framework Entities Object带有 DataContracts VS 默认实体框架实体对象的 WCF 服务
【发布时间】:2011-02-07 18:40:12
【问题描述】:

将 WCF 服务与 DataContracts VS Entity Framework Entities Object 一起使用的优缺点是什么?

如果我使用 ADO.net Self Tracking Entity Generator 生成数据合同,我的数据层中的类。

在我的 WCF 服务中使用它的最佳方式是什么? datacontract 生成的 ADO.net Self Tracking Entity Generator 将通过服务进行交换,还是 WCF 服务仍将使用默认的实体框架对象?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    目前大多数项目都是使用第三种实体开发的 - POCOs。 POCO 在与ObjectContext 分离时也无法跟踪更改。这是STE的特点。

    【讨论】:

    • 看来我得深入研究 POCO'A
    【解决方案2】:

    这取决于您从事的工作类型。

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

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

    在控制和分离方面,将 EF 与 POCO 结合使用可能是下一个,默认数据库生成形式最后。然而,当与 Silverlight 客户端一起使用时,这两个更易于使用且更灵活。

    【讨论】:

    • 感谢 Jtew,我会调查 POCO,看看这是否适合我。
    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多