2012-03-26 41 views
0

我想在我的數據庫中創建一個複雜的結構。我的表結構是:EF 4.1和兩級對象插入失敗

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

只是爲了防止其他人遇到這個問題,問題是因爲觸發器。

消除觸發消除了這個問題,我可以創建3-4個層次並保存它,沒有任何問題。