EF 4.1 и двухуровневая вставка объекта не удаются - PullRequest
0 голосов
/ 26 марта 2012

Я пытаюсь создать сложную структуру в моей базе данных. Моя структура таблицы:

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 обрабатывать вставку нескольких уровней объектов, подобных этому? Я что-то упустил?

1 Ответ

0 голосов
/ 27 марта 2012

На случай, если кто-то еще столкнется с этим, проблема в триггере.

Устранение триггера устранило проблему, и я могу создать 3-4 уровня и сохранить его без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...