2010-12-26 21 views
1

私のCMS用の小さなフォーラムを作成しています。私はDALとしてsubsonic 2.2を使用しています。私はこのように私のtheadsをロードしてい :だから今、私は私のDAL.ForumThreadアイテムを持っているとき、私は、接続されたポストを読み込むことができasp.net subsonic 2.2ページングリンクテーブルコレクション

ForumPostID | ThreadID | Description | UserID | CreatedOn| etc 

:私のデータベースの私ForumPostsテーブルで

DAL.ForumThread item = DAL.ForumThread.FetchByID(id); 

は次のようになります使用してコレクション:

item.ForumPosts(); 

このすべてが素晴らしい作品が、問題は、私はサーバーサイドページングを使用して、あまりにも示すようないくつかの追加の選択パラメータを追加したいんだということですアクティブなレコードのみ。

SubSonic 2.2を使用する場合でもこれは可能ですか?私は現在、新しいSubSonic.Queryを作成してthreadidで投稿を選択していますが、問題なくpageindexとpagesizeを設定できますが、これは簡単にできると思いますか?

また、item.ForumPosts()を使用するか、新しいクエリを開始するだけで、パフォーマンスの差があるかどうかを知りたい場合、forumpostsはすでにForumThreadsコレクションにあり、新しいデータベース呼び出しを必要としないと思います右?

誰かが私を正しい方向に向けることを願っています! あなたの時間とメリークリスマスありがとうございました。

敬具、 マーク

答えて

0

これは少し遅くなりますが、。することができます代わりにクエリツールを使用して、このようなものを使用する:

ForumPostsCollection posts = new ForumPostsCollection().Where(ForumPosts.Columns.ThreadId,1).Load(); 

あなただけのようにwhere句を繰り返して必要な数のパラメータを使用することができます。

あなたもの比較を使用することができます
ForumPostsCollection posts = new ForumPostsCollection().Where(ForumPosts.Columns.ThreadId,1).Where(ForumPosts.Active,true).Load(); 

どこのメソッドが過負荷になるか

ページングされた結果のために、私はあなたがそれを行うことができると確信していますが、私はatmとここで私には亜音速を持っていません、そして、バージョン2.2のドコで何も見つけられません。

あなたの2番目の質問について、SubsonicはLazy Loadingのコレクションを使用します。つまり、ForumPostsメソッドを実行すると、そのコレクションに別のデータベース呼び出しが発行されます。 Parentのエンティティでは同じことではなく、ここでのルールは、たとえばForumPosts() - 新しいデータベース呼び出しが行われた場合、それはプロパティです(例:post.Threadがロードされる)。

+1

ご協力いただきありがとうございます。 – Mark

関連する問題