0

我目前正在尝试在 n 层场景中使用 STE。我有一个 WCF 服务,它允许我检索对象图和/或更新对象以及允许我编辑该图的各个方面并将更改提交回服务的客户端 (WPF) 应用程序。

我的问题是这个;我检索到的对象图非常大 - 有时包括图像 - 但我的更新很少。但是,当我提交更新时,由于对象之间的关系,整个图表都会提交回服务。

例如; 给定客户/订单/订单详情场景:我检索客户及其订单和相关订单详情(3 个级别)。然后我更新一个 OrderDetail 来改变数量。我通过 WCF 方法提交要更新的 OrderDetail,该方法采用 OrderDetail 对象,但序列化遵循通过 Order 到 Customer 的关系属性,不仅序列化更改的 OrderDetail,还序列化所有 Orders、OrderDetails 和客户。

当服务调用参数被序列化时,如何阻止所有这些被传回,并且只传回要更新的对象而不遵循关系?

我可以为 STE 找到的所有示例(仍然不多)似乎旨在实际传递所有相关对象(例如在线博客/帖子示例)。

4

2 回答 2

1

如您所知,ObjectStateManager 管理对象状态,尤其是在 n 绑定应用程序上,以更新特定对象,请使用以下方法:

  1. 首先将其附加到上下文
  2. ChangeObjectState - 接受 EntityState 的枚举:已添加/已修改/已删除
  3. 保存更改

检查链接:http: //msdn.microsoft.com/en-us/magazine/ee321569.aspx

于 2012-06-29T03:07:41.260 回答
0

如果您不希望传递所有数据,则必须使用较小的集合。因此,如果您默认检索客户 + 所有订单 + 所有订单详细信息,那么它就是您的工作集。如果您只想使用单个订单创建操作来获取该订单及其详细信息。

它在某种程度上与聚合根有关。订单是订单项目的聚合根,因为使用没有订单的单个项目没有太大意义。但是在没有客户的情况下与 Order 合作可能是可能的,不是吗?

于 2011-03-14T17:52:04.693 回答