这是我的问题:我使用的是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方法”在父级之前被调用。因此,由于外键约束而发生异常。 这里的代码是简化的。在实际案例中,我不能两次调用提交更改(一个创建父实体后,一个创建子项后)
如何控制服务器端的插入顺序,或者我做错了什么?
感谢您的帮助。
答案 0 :(得分:0)
感谢您的帮助,但我发现了问题。
实际上我是通过存储过程插入父实体而我没有正确配置Id的“输出结果绑定”。因此,在插入数据库后,我的实体模型上的父ID未正确更新。