A
オブジェクトのセット ( ) と多数の関連オブジェクト ( B
) を 1 つのクエリで取得したいと考えています。にはナビゲーション プロパティがないため、次の構文を使用する必要があるA
とB
思います。
select a from db.As where a.Id = x select new AndBHolder
{
A = a,
Bs = select b from db.Bs where b.ASomeId == A.SomeId select b
}
これが最善の方法かどうかはわかりませんが、うまくいきます。B
ただし、 (のリスト)のプロパティを含める必要がありますCs
。うまくいくとは思っていませんでしたが、試してみました:
select a from db.As where a.Id = x select new AndBHolder
{
A = a,
Bs = select b from db.Bs.Include("Cs") where b.ASomeId == A.SomeId select b
}
「メソッド...タイプで宣言されたインクルード...タイプのインスタンスで呼び出すことはできません...」で失敗します。次に、プロジェクション内でプロジェクションを試してみようと思いました:
select a from db.As where a.Id = x select new AndBHolder
{
A = a,
Bs = select b from db.Bs where b.ASomeId == A.SomeId select new B
{
Id = b.Id,
// ...
Cs = select c from db.Cs where c.BId == b.Id select c
}
}
マップされたオブジェクトへの投影が許可されていないため、 「エンティティまたは複合型 ' B
' は LINQ to Entities クエリで構築できません」で失敗します。Bs
では、データが入力された状態でを取得するにはどうすればCs
よいですか? または、セカンダリ レベルの包含はサポートされていませんか? データベースに対して 2 つの呼び出しを行う必要がありますか? 1 つは As を取得し、もう 1 つはBs
そのCs