0

這是我的問題:我使用Silverlight + WCF RIA + EntityFramework和域數據源。我'在客戶端插入父實體,然後子實體(家長可以有很多孩子)是這樣的:WCF RIA更改集提交訂單。爲什麼在父實體之前插入子實體?

Parent p = new Parent(); 
    p.PropertyA = "MyTest"; 

    if (!this.domainContext.Parents.Contains<Parent>(p)) 
    this.domainContext.Parents.Add(p); 

    Child c = new Child(); 
    c.PropertyOfC = "Togodo"; 

    if (!this.domainContext.Childs.Contains<Child>(c)) 
     this.domainContext.Childs.Add(c); 

    c.parent = p; 
    p.Child.Add(c); 

    // Submit update RAISE ERROR 
    domainContext.SubmitChanges(submitOp => 
    { 
     // Declare error 
     Exception error = null; 

     // Set error or result 
     if (submitOp.HasError) 
     { 
      error = submitOp.Error; 
     } 

     // Invoke completion callback 
     if (completed != null) 
       completed(error); 
     }, null); 
    } 

當我打電話了「的SubmitChanges」,對serveur側,子元素的「插入方法」在父元素之前被調用。所以由於外鍵約束而發生異常。 這裏的代碼被簡化了。在真實情況下,我無法兩次調用提交更改(一個創建父實體後,一個創建子實體後)

如何控制服務器端的插入順序或我做錯了什麼?

感謝您的任何幫助。

+1

是否用'[Composition]'註解了父'子集合?你能分享定義實體的代碼嗎? – 2012-07-06 14:46:10

回答

0

感謝您的幫助,但我發現了這個問題。

事實上,我通過存儲過程插入父實體,我沒有正確配置Id的「輸出結果綁定」。所以插入數據庫後,父實體模型沒有在我的實體模型上正確更新。

相關問題