2012-03-08 6 views
0

私は、次のコードを持っている:後で、その後NHibernateは - 保存されたオブジェクトにアタッチされている項目は、DBに保存されていない理由を

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はdbに正しく保存されますが、後で子に追加するアイテムは保存されません。どうして?私は、ルートフォルダが以前にデータベースからダウンロードされていれば、これが動作することを知っています。なぜNHibernateはオブジェクトグラフをチェックするほどスマートではないのですか?

//編集

マッピングは次のように流暢なAPIを使用して行われます:あなたは子項目に親を設定アレント

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

子供のマッピングを表示できますか?子コレクションには、カスケード=「すべて」または定義されたもの – bernhardrusch

答えて

1

ので、NHibernateは関係の両側を認識していません。

var child = new KnowledgeFolder { Name = entry, Archived = true }; 
rootFolder.Children.Add(child); 
child.Parent = rootFolder; 
関連する問題