NHibernate - почему элементы, прикрепленные к сохраненному объекту, не сохраняются в БД - PullRequest
0 голосов
/ 08 марта 2012

У меня есть следующий код:

var rootFolder = new KnowledgeFolder { Archived = true, Name = path.First()};
this._folderRepository.Save(rootFolder); // this goes to the db

А потом: (здесь неактуальный код)

var child = new KnowledgeFolder { Name = entry, Archived = true };
rootFolder.Children.Add(child);
//////////
this._folderRepository.FlushSession();

rootFolder правильно сохранен в БД, но другие элементы, которые я позже добавлю в Children, не будут сохранены. Зачем? Я знаю, что если корневая папка была ранее загружена из базы данных, это будет работать. Почему NHibernate не достаточно умен, чтобы проверить граф объектов?

// редактировать

Отображение выполняется с использованием свободно API, как это:

mapping.HasManyBidirectional<KnowledgeFolder, KnowledgeFolder>(g => g.Children, p => p.Parent);

1 Ответ

1 голос
/ 08 марта 2012

Вы не устанавливаете родителя для дочерних элементов, поэтому nhibernate не знает о обеих сторонах отношений.

var child = new KnowledgeFolder { Name = entry, Archived = true };
rootFolder.Children.Add(child);
child.Parent = rootFolder;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...