我正在尝试在我的数据库中创建一个复杂的结构。我的表结构是:
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.
如果我不创建兄弟姐妹,并删除c.Siblings.Add(s);
那么一切正常。 (请注意,Child表上有一个触发器,用于从Hier表中插入层次结构的其余部分。)
EF4.1是否能够处理插入多个级别的对象?我错过了什么吗?
答案 0 :(得分:0)
以防其他人遇到此问题,问题在于触发器。
消除触发消除了问题,我可以创建3-4级深度并保存它而没有任何问题。