2011-06-29 10 views
2

コレクションを含むエンティティをロードするときなど、返されるコメントの数を定義できる場合は、0 - > n個のコメントを含むことができる投稿。私はこれを持っている時点ではFluent nHibernateコレクションの選択ロード

public IList<Post> GetNPostsWithNCommentsAndCreator(int numOfPosts, int numOfComments) 
    { 
     var posts = Session.Query<Post>().OrderByDescending(x => x.CreationDateTime) 
      .Take(numOfPosts) 
      .Fetch(z => z.Comments) 
       .Fetch(z => z.Creator).ToList(); 

     ReleaseCurrentSession(); 
     return posts; 
    } 

はスキップを追加する方法はありますし、あなたがの多くをロードしなくて済むようコレクションでページング機能の種類を許可するようにコメントしてくださいあなたが必要としないもの。

私は遅延ロードを認識していますが、実際には使用したくないので、MVCパターンを使用しています。ロードしたリポジトリからオブジェクトを戻してキャッシュすることができます。私は実際に私の意見がselect文を引き起こすことを望んでいません。

コメントのフェッチを実行しないで、作成した日付時刻別のコメントコメントを別々に実行してから、たとえばトップ5を選択して返信しますオブジェクト?

これに関するご意見やご感想をお寄せください。それは、データを収集エンティティを水和することができるよう

おかげで、

ジョン

+0

NHibernateには複雑すぎるために必要な結合を想像すると、投稿とコメントにTOPを2つの別々のサブ選択として使用し、それらを外部結合する方法 –

答えて

0

Aは、左の外側が関連テーブルに参加しないシンプルなフェッチ。あなたが探しているのは、特定のエンティティに関する個別のクエリが必要です。そこから、結果セット(skip/take、setmaxresultsなど)を制限する任意の数の構文を使用できます。

関連する問題