2013-09-21 33 views
1

我有一個客戶端silverlight應用程序,它使用RIA服務連接到數據庫 而不是EntitySet來管理實體我有一個包含所有加載實體和我的上下文的列表的數據的本地緩存總是空的,這允許我創建多個具有多個邏輯視圖的查詢到同一個數據庫表中並進行更好的刷新(支持移除和處理服務器觸發器以進行更改)。附加在RIA服務中修改的對象

現在我的問題是,當一個實體的變化,我想將其連接到EntitySet並提交這些更改應用到服務器,Attach功能連接對象unmodified

所以我的問題是如何在RIA服務的客戶端附上實體作爲modified。我知道如何在服務器端做到這一點,但我需要在Silverlight中執行此操作。

+0

爲什麼不先附加實體然後再進行修改?這應該將實體更改爲修改 – Jehof

回答

0

從上下文中 - 使用.Attach - 方法。這將把一個實體「附着」回上下文,允許上下文跟蹤實體的變化。當您發出保存命令時,上下文將執行相應的命令來CRUD服務器上的實體。

嘗試先附加實體,然後將EntityState設置爲Modified。

是的 - 我應該在回答之前閱讀完整個問題! :)

+0

感謝您的答案,但在Silverlight中的EntityState只讀屬性 – BigBoss

0

您可以嘗試使用Entity類的IEditableObject接口來解決您的問題。該接口在實體上顯式實現,因此您必須將該實例轉換爲接口。

MyEntity entity = new MyEntity(); 
MyEntitySet.Attach(entity); 

((IEditableObject)entity).BeginEdit(); 
// edit the properties of the entity; 
((IEditableObject)entity).EndEdit();