WCF RIA变更集提交订单。为什么在父实体之前插入子实体?

时间:2012-07-06 11:00:03

标签: entity-framework-4.1 wcf-ria-services changeset domaincontext

这是我的问题:我使用的是Silverlight + WCF RIA + EntityFramework和域数据源。我在客户端插入一个父实体,然后插入一个子实体(父母可以有很多孩子),如下所示:

   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”时,在服务器端,子enity的“insert方法”在父级之前被调用。因此,由于外键约束而发生异常。 这里的代码是简化的。在实际案例中,我不能两次调用提交更改(一个创建父实体后,一个创建子项后)

如何控制服务器端的插入顺序,或者我做错了什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

感谢您的帮助,但我发现了问题。

实际上我是通过存储过程插入父实体而我没有正确配置Id的“输出结果绑定”。因此,在插入数据库后,我的实体模型上的父ID未正确更新。