【发布时间】:2011-04-14 23:00:50
【问题描述】:
问题总结:
当使用自引用关系并尝试添加对象时,.SaveChanges() 失败并显示“无法确定‘PlannerModel.FK_PlanItem_PlanItem’关系的原则结束。多个添加的实体可能具有相同的主键。”。
问题详情:
plannerContext = new PlannerEntities2();
var unitPlanQuery = from d in plannerContext.UnitPlans
where d.TeacherId == sourceTeacherId
orderby d.TeacherId
select d;
var planItem = new PlanItem();
ClonePlanItem(pi, planItem); // where pi is original PlanItem
planItem.ParentPlanItem = (PlanItem)planItemsAddedHT[pi.ParentPlanItemId];
// above object on right is the previously added PlanItem
plannerContext.PlanItems.AddObject(planItem);
plannerContext.SaveChanges();
我回到我的代码并对其进行了注释,这样我就确定只有一次对“plannerContect.PlanItems.AddObject(planItem)”的调用正在发生。因此只有一个对象可以插入。错误信息改为:
“无法确定相关操作的有效顺序。由于外键约束、模型要求或存储生成的值,可能存在依赖关系。”
我返回并在 SQL Management Studio (SQL Server 2008 btw) 的 ParentPlanItemId 列中添加了“允许 Nulls”,并刷新了我的模型……但这并没有什么不同。
表:PlanItem
PlanItem int PK,身份
ParentPlanItemID int , 允许为空
ItemText varchar(200)
来自模型设计器的参考约束:Principal = PlanItem;主键 = PlanItemId;相关属性 = ParentPlanItemId
来自模型设计师的关联:
关联集名称:FK_PlanItem_PlanItem
End1 多重性:1(PlanItem 之一)
End1 导航道具:PlanItem1
End2 多重性:*(PlanItem 的集合)
End2 导航:ParentPlanItem
名称:FK_PlanItem_PlanItem
【问题讨论】:
标签: c# tsql entity-framework-4