Я пытаюсь создать сложную структуру в моей базе данных. Моя структура таблицы:
Parent
ID
Hier
ID
ParentHierID
Desc
Child
ID
ParentID
HierID
Sibling
ID
ChildID
SiblingTypeID
SiblingType
ID
Desc
Вот что я делаю:
_objectSet = _context.CreateObjectSet<Parent>();
Parent p = Mapper.Map(ParentView, Parent>(parentView);
Child c;
Sibling s;
foreach ( var hier in TopLevels)
{
c = new Child();
c.HierId = hier.ID;
..set some other fields from foo...
p.Childs.Add(c);
s = new Sibling();
s.SiblingTypeID = 1;
c.Siblings.Add(s);
}
_objectSet.AddObject(p);
_context.SaveChanges(SaveOptions.None);
Это приводит к исключению:
The INSERT statement conflicted with the FOREIGN KEY constraint
"Sibling_Child_FK". The conflict occurred in database "DB",
table "Child", column 'ID'.
The statement has been terminated.
Если я не создаю Sibling и не удаляю c.Siblings.Add(s);
, тогда все работает. (Обратите внимание, что в дочерней таблице есть триггер, который вставляет остальную часть иерархии из таблицы Hier).
Должен ли EF4.1 обрабатывать вставку нескольких уровней объектов, подобных этому? Я что-то упустил?