1

ここに私の小さな問題があります: 次のデータ構造に基づく EF4 のコードファースト プロジェクトがあります。

エンティティとして、複数の部屋があり、それぞれに複数の窓がある家を持っているとします。それはかなり直線的です。しかし、ウィンドウには色のコレクションだけでなく、マテリアルのコレクションも含まれています。私は今、家、部屋、窓、色素材をロードしたいと思っています。

次のコードを使用して、すべての家をロードします。

  • 部屋 -> 窓 -> 材料 または
  • 次のコードを使用して、部屋 -> 窓 -> 色:

// house -> room -> window -> material
queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows.Select(Function(w) w.Materials)), Room))
// house -> room -> window -> color
queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows.Select(Function(w) w.Colors)), Room))

マテリアルと色を含む単一の結果セットを取得するにはどうすればよいですか?

事前にどうもありがとうございました!

4

1 に答える 1

0

私はjoinこの問題を助けることを考えています。SQL の結合のように。次のようなものを使用できます.witchはあなたの説明からのドラフトです...

 'select windows 
 dim query = (From w In (queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows), Room)))

'add color from windows
Join  w.color in (queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows), Room)) Select u.color) On w.color = u.color

'add material also from window
Join w.material in (queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows), Room)) Select u.material)) On w.material = u.material


'then select the result 
Select w)

必要に応じて修正してください。これは単なる提案です。書かれていることではなく、これの意味についてもっと理解していただければ幸いです。

于 2012-10-16T19:08:03.050 に答える