РЕЗЮМЕ ПРОБЛЕМЫ:
При использовании самоссылающихся отношений и попытке добавления объектов происходит сбой .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();
Я вернулся к своему коду и прокомментировал его так, что я точно знал только один вызовto 'plannerContect.PlanItems.AddObject (planItem)' происходило.Таким образом, был только один объект для вставки.Сообщение об ошибке изменилось на:
«Невозможно определить действительный порядок для зависимых операций.Зависимости могут существовать из-за ограничений внешнего ключа, требований модели или сгенерированных хранилищем значений ».
Я вернулся и добавил« Разрешить пустые значения »в столбец ParentPlanItemId в SQL Management Studio (кстати, SQL Server 2008) иобновил мою модель ... но это ничего не изменило.
Таблица: PlanItem
PlanItem int PK, удостоверение личности
ParentPlanItemID int, allow null
ItemText varchar (200)
Ссылочное ограничение от дизайнера моделей: Principal = PlanItem;Основной ключ = PlanItemId;Зависимое свойство = ParentPlanItemId
Ассоциация от дизайнера моделей:
Имя набора ассоциаций: FK_PlanItem_PlanItem
End1 Multipllicity: 1 (один из PlanItem)
End1 Навигационная поддержка:PlanItem1
End2 Множественность: * (Коллекция PlanItem)
End2 Nav: ParentPlanItem
Имя: FK_PlanItem_PlanItem