由孙子实体实体框架筛选

问题描述:

如果我有以下表格:
Parent:有ParentId
Child:已ChildIdParentId
Grandchild:已GrandchildIdChildIdQuantity由孙子实体实体框架筛选

最新最好的方法来检索一个父母的名单,他们有一个数量大于10的孙子(例如)?

我打了LINQ到实体,产生类似:

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

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

试试这个:

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

Include确实将加载与加载父母所有的孩子和孙子的实体。

性能不好用这种方法...

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

如果您需要在以后的孩子和孙子们也许并不需要他们在所有的,请尝试使用后加载它们:

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

如果您有100条父母记录,此**可能会执行变差,那么此类技术将为每条记录运行一次子查询,从而产生100个查询。请参阅关于N + 1查询的文献。 – AaronLS 2014-10-03 18:18:03