這是我的場景:Silverlight&RIA&POCO:SubmitOperation當插入兩個新的子實體時失敗。一個具有相同ID的實體
我正在使用Silverlight,RIA和POCO對象(沒有實體框架;我們正在對付Oracle和SP)。
我有一個Parent對象,它包含一個Child對象的集合。我已經正確設置了Parent上的Association和Composition屬性。當我想保存更改時,整個對象圖都會正確發送到服務器。
用戶可以將一個或多個子對象添加到父級。
現在,如果用戶向Parent添加一個Child對象並保存它,那麼一切正常。但是,當用戶試圖將兩個或更多的新對象添加到父,然後堅持下去,我得到了經典的錯誤:
System.ServiceModel.DomainServices.Client.DomainOperationException: Submit operation failed. An entity with the same identity already exists in this EntitySet. ---> System.InvalidOperationException: An entity with the same identity already exists in this EntitySet.
現在,這是失敗的客戶端上。我正在追蹤一切 - 數據庫實際上得到更新!一切都會正確發送到服務器,數據庫會被更新。當重新查詢發生時,我檢查服務器上的對象鍵,它們是正確的 - 所有新的子對象都按順序從零更新爲實數。
這是當我得到重新加載客戶端上的父對象,我得到這個錯誤。我不明白。我正在爲重新加載操作創建一個新的上下文;它應該是空的,只需加載Parent和關聯的子項。我在查詢方法結束之前檢查服務器端的數據 - 父數據和子數據沒有問題。那麼發生了什麼?爲什麼我的上下文喋喋不休,無法完成這個SubmitOperation?
我想通了。基本上,你必須停止嘗試手動做事,讓RIA爲你做。 – 2011-01-10 20:44:55