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的“输出结果绑定”。所以插入数据库后,父实体模型没有在我的实体模型上正确更新。

相关问题