2009-05-30 7 views
0

私はそれぞれメニュー項目のコレクションを含むメニューセクションにコレクションを持っています(これは2段階メニュー、単純なものです)。理想的には、私は同じ時間にMenuItemsをつかむMenuSectionコレクションをdeeploadすることができますが、それは失敗します、私はサブソニックを介して1つのデータベース呼び出しを使用してそれぞれの別のコレクションを返すことができる方法はありますか?複数のテーブルを持つDataSetを使用しているのですか?SubSonicで複数のコレクションを返す

答えて

0

はい - これにはさまざまな方法があります。ビューを使用してすべてをロードして、それを構造化オブジェクトセットに振り向けることができます。あるいは、結合されたクエリをデータレアアで実行して、いくつかのループロジックでオブジェクトをロードすることもできます。

+0

ロブ、返信いただきありがとうございます。私はあなたが「スピンアウト」ということを本当に明確にしていません。つまり、メニューセクションとアイテムの両方のデータを持つ行のコレクションを読み込む必要がありますか? リーダとループでは、セクションのコレクションを取得してから、アイテムのグループごとに別々の呼び出しを行うことはできません。 –

+0

"スピンアウト"とは、読者をループさせてその値をコレクションに割り当てることを意味します。ビューを使用すると、データのフラット表現が得られます。結合されたクエリを使用する場合 - 同じこと - 2つのコレクションを満たすデータのフラット表現。 –

0

ロブは正しいと言いました。別の角度はそれほどのように次のようになります。

Partial Public Class MenuSection 

Private _ChildMenus As Generic.List(Of MenuSection) 
Public Property ChildMenus() As Generic.List(Of MenuSection) 
    Get 
     If _ChildMenus Is Nothing Then 
      ' Load the data in the list 
      _ChildMenus = New SubSonic.Select().From(Data.MenuSelection). _ 
      Where("ParentMenuItemId").IsEqualTo(1). _ 
      ExecuteTypedList(Of Data.MenuSelection)() 
     End If 
     Return _ChildMenus 
    End Get 
    Set(ByVal value As Generic.List(Of MenuSection)) 
     _ChildMenus = value 
    End Set 
End Property 

エンドクラス

関連する問題