4

次のテーブルがある場合:
Parent: has ParentId
Child: has ChildIdand ParentId
Grandchild: has GrandchildId, ChildIdandQuantity

たとえば、数量が 10 を超える孫を持つ親のリストを取得するための最良の方法は何ですか?

私はエンティティへのlinqで遊んで、次のようなものを生成しました:

context.Parent.Includes("Children").Include("GrandChildren").Where( ... )

しかし、構文については確信が持てず、パフォーマンスについて疑問に思いました.インクルードはすべてのオブジェクトをロードしますか? これを達成するための最良の方法は何ですか?

4

2 に答える 2

6

これを試して:

var query = context.Parents
                   .Where(p => p.Children.Any(
                          c => c.GrandChildren.Any(g => g.Quantity > 10));

Includeロードされた親に関連するすべての子エンティティと孫エンティティを実際にロードします。

于 2012-08-09T08:26:08.840 に答える
3

このアプローチではパフォーマンスが悪い...

context.Parent.Includes("Children").Include("Children.GrandChildren").Where( ... )

後で子と孫が必要な場合、またはまったく必要ない場合は、後で次のようにロードしてみてください。

if (!parent1.ChildrenReference.IsLoaded)    
     parent1.ChildrenReference.Load();
于 2012-08-09T08:30:01.040 に答える