2009-06-06 9 views
0

私はカテゴリモデルのツリー構造を最適化しようとしています。カテゴリモデルには、親プロパティと子コレクションがあります。1からの公開ID:n relation/tree(NH)

私が通常これをやっているのは、すべてのカテゴリを読み込むことです(悪いですが最大100ノード)。次に、ツリーを手動でアセンブルし、すべてのカテゴリをidで索引付けし、親をカテゴリparentidで検索します。汚いが本当に速い。私が持っている問題は、nhibernateを使うとき、ParentIDを親関係から取得/マップする方法を知らないということです。

は私が流暢NHibernateの中でこのマッピングがあるとしましょう:

 References(cat => cat.Parent,"Parent_id") 
      .FetchType.Select() 
      .WithForeignKey("Category_ParentCategory"); 

私の質問は次のようになります。どのように私は、データベースから親をロードすることなく、特定のカテゴリにのParentIDを取得したり、マップすることができますか?

また、誰かがマッピングツリーで実用的な経験をしているか、または試したhttp://blogs.hibernatingrhinos.com/nhibernate/archive/2008/05/14/how-to-map-a-tree-in-nhibernate.aspx

答えて

1

ParentIdをプロパティとしてマップし、Parentオブジェクトをマッピングすることができます。おそらく、ParentIdを読み取り専用としてマップし、ロジックをParentIdを設定するParentのセッターに入れたいと思うでしょう。

ただし、これは必ずしも必要ではありません。単一のISessionでツリーを作成する場合、各Parentはデータベースから一度だけロードされ、後続のリクエストでキャッシュから取得されます。

関連する問題