我们遇到了Entity Framework 4的一个奇怪问题。我们的模型包含一个与3个实体相关联的实体,让我们称它们为第一级子。其中一个子实体与另一个实体相关联 - 让我们将其称为二级子实体。
所有这5个实体都映射到存储过程以执行插入,更新和删除。
在映射存储过程之前,实体框架发出的插入查询的顺序是正确的 - 发出第一个主表的插入查询,然后发出第一级子项的插入查询,最后发出第二级子项的插入查询。
但是在映射存储过程之后,实体框架以错误的顺序发送执行存储过程语句 - 首先是主表的插入存储过程,然后是为2个第一级子节点(不是第二级子节点的父节点)插入存储过程,然后是二级子级存储过程(用于多个记录),最后是作为二级子级父级的剩余一级子级的插入存储过程。
这会产生一个问题,因为在父插入导致外键冲突之前,第二级子进程的插入。
在删除作为二级子级父级的表的存储过程映射时,它可以正常工作。
任何人都知道什么决定了实体框架生成的SQL语句的顺序?