EF 4.1和两级对象插入失败

时间:2012-03-26 18:19:03

标签: entity-framework-4

我正在尝试在我的数据库中创建一个复杂的结构。我的表结构是:

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是否能够处理插入多个级别的对象?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

以防其他人遇到此问题,问题在于触发器。

消除触发消除了问题,我可以创建3-4级深度并保存它而没有任何问题。