实体框架由孙子实体过滤

时间:2012-08-09 08:19:27

标签: c# entity-framework linq-to-entities

如果我有以下表格:
ParentParentId
ChildChildIdParentId
Grandchild:有GrandchildIdChildIdQuantity

什么是最好的方法来检索他们有一个数量大于10的孙子的父母列表(例如)?

我和linq一起玩实体,产生类似的东西:

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

但是对语法不确定,我想知道性能 - 包括加载所有对象吗?实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:6)

试试这个:

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

Include确实会加载与加载的父项相关的所有子孙实体。

答案 1 :(得分:3)

这种做法表现不好......

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

如果您以后需要孩子或孙子女孩,或者根本不需要孩子和孙子女孩,请尝试稍后加载:

if (!parent1.ChildrenReference.IsLoaded)    
     parent1.ChildrenReference.Load();