2012-03-26 12 views
0

データベースに複雑な構造を作成しようとしています。私のテーブルの構造は次のとおりです。EF 4.1と2レベルオブジェクトの挿入に失敗する

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);すべてが動作します。 (Hierテーブルから残りの階層を挿入するトリガーがChildテーブルにあることに注意してください)。

EF4.1でこのようなオブジェクトの複数のレベルを挿入する必要がありますか?何か不足していますか?

答えて

0

誰かがこの問題に遭遇した場合、問題はトリガーのためです。

トリガーを排除することで問題は解決しました.3〜4レベルの深みを作り、問題なく保存できます。

関連する問題