我目前正在尝试在n层场景中使用STE。我有一个WCF服务,允许我检索对象图和/或更新对象以及客户端(WPF)应用程序,允许我编辑该图的各个方面并将更改提交回服务。
我的问题是这个;我检索的对象图非常大 - 有时包括图像 - 但我的更新很少。但是,当我提交更新时,由于对象之间的关系,整个图表将被提交回服务。
例如;给定Customer / Order / OrderDetail场景:我检索一个客户及其订单和相关的OrderDetails(3个级别)。然后,我更新单个OrderDetail以更改数量。我通过WCF方法提交OrderDetail,该方法接受OrderDetail对象,但序列化通过Order向客户跟踪关系属性,并且不仅序列化已更改的OrderDetail,还序列化所有Orders,OrderDetails和客户。
如何在序列化服务调用参数时将所有这些都停止传回,并且只是在不遵循关系的情况下传回要更新的对象?
我可以为STE找到的所有示例(并且仍然不多)似乎是为了实际传递所有相关对象(例如在线博客/帖子示例)。
答案 0 :(得分:1)
如您所知,ObjectStateManager管理对象状态,尤其是在n-tied应用程序上,以更新特定对象,请使用以下方法:
答案 1 :(得分:0)
如果您不希望传递所有数据,则必须使用较小的数据集。因此,如果您默认检索客户+所有订单+所有订单详细信息,那么它就是您的工作集。如果您只想使用单个订单创建操作来仅获取该操作及其详细信息。
它以某种方式与聚合根相关。订单是订单商品的聚合根,因为使用没有订单的单个商品并没有多大意义。但是在没有客户的情况下使用Order可能是可能的,不是吗?