3

上下文:存储库模式、WCF、WPF/SL

在我的自跟踪实体存储库中,我需要显式加载一些相关属性才能正确处理查询。这些不是客户要求的包含,我想摆脱它们以保持网络流量合理。到目前为止,我的解决方案是:

  1. 接收查询
  2. 负载包括回答请求所必需的
  3. 执行查询
  4. 创建临时 IEnumerable
  5. 迭代 4) 并再次加载所有项目,这次仅使用从客户端应用程序请求的包含路径
  6. 通过 WCF 返回实体

我想这样做:

  1. 接收查询

  2. 加载所有包括(基础设施加上客户请求)

  3. 执行查询

  4. 卸载“基础设施”包括

  5. 通过 WCF 返回实体

    这样做的正确方法是什么?

谢谢,阿明

4

1 回答 1

0

延迟加载和正确的 DTO 响应对象怎么样?

  1. WCF 返回自定义 Order 或 GetOrderResponse (Contracts.Order)
  2. 通过存储库从 EntityModel 加载订单(只是订单)
  3. 使用自动映射器映射 EntityModel.Order => Contracts.Order

结果:仅加载 Contracts.Order 中的相应属性:

前任。Contracts.Order Number OrderDetails (=> 只有这个属性是通过延迟加载加载的,因为它是映射的)

如果您正在构建 SOA 或 Web 服务,请不要让客户端指定负载图。如果客户端需要指定负载图,请考虑使用 WCF 数据服务部署模型,效果很好。

也许您可以构建两个系统.. 一个 SOA 和一个(只读)数据服务。

于 2013-05-27T19:08:53.753 回答