0

我目前正試圖在n層方案中使用STE。我有一個WCF服務,它允許我檢索對象和/或更新對象以及客戶端(WPF)應用程序的圖形,該應用程序允許我編輯該圖的各個方面並將更改提交回服務。EF4 Self Tracking Entities

我的問題是這樣的;我檢索的對象圖形非常大 - 有時包括圖像 - 但我的更新很少。但是,當我提交更新時,由於對象之間的關係,將整個圖提交回服務。

例如;給定一個Customer/Order/OrderDetail場景:我用他們的Orders和相關OrderDetails(3個級別)檢索一個Customer。然後,我更新一個OrderDetail可能會更改數量。我通過一個帶有OrderDetail對象的WCF方法提交OrderDetail,但序列化通過訂單傳遞給Customer的關係屬性,並且不僅序列化了已更改的OrderDetail,而且序列化了所有Orders,OrderDetails和客戶。

當服務調用參數被序列化時,如何阻止所有這些被傳回,並且只傳回要更新的對象而沒有遵循關係?

我可以找到的所有STE可以找到的例子(並且仍然不多)似乎被設計爲實際傳遞所有相關對象(例如在線博客/發佈例子)。

回答

0

如果您不想讓所有數據都通過,您必須使用較小的設置。因此,如果您默認檢索客戶+所有訂單+所有訂單詳情,那麼這是您的工作集。如果您只想使用單一訂單創建操作來獲取該單據及其詳細信息。

它以某種方式與聚合根有關。訂單是訂單商品的聚合根,因爲在沒有訂單的情況下使用單個商品沒有太大意義。但是,如果與訂單沒有客戶合作可能是可能的,不是嗎?

1

正如你所知道的ObjectStateManager管理的對象的狀態,尤其是在正捆綁的應用程序,更新特定對象,請使用以下方法:

  1. 其附加上下文第一
  2. ChangeObjectState - 接受的枚舉EntityState:添加/修改/刪除
  3. 的SaveChanges

檢查鏈接:http://msdn.microsoft.com/en-us/magazine/ee321569.aspx