2012-03-08 43 views
0

我有以下代码:NHibernate的 - 为什么连接到已保存的对象项目不保存到数据库

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被正确保存到数据库,但其他项目,我以后添加到儿童不会保存。为什么?我知道,如果根文件夹以前从数据库下载,这将工作。为什么NHibernate不够聪明来检查对象图?

//编辑

映射使用流利的API这样做:

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

你可以显示你的孩子的映射吗?儿童收藏必须具有级联=“全部”或类似的定义 – bernhardrusch 2012-03-08 08:25:57

回答

1

您的arent设置的子项中的父母这样NHibernate的是不知道的关系,双方的。

var child = new KnowledgeFolder { Name = entry, Archived = true }; 
rootFolder.Children.Add(child); 
child.Parent = rootFolder;