由孙子实体实体框架筛选
问题描述:
如果我有以下表格: Parent
:有ParentId
Child
:已ChildId
和ParentId
Grandchild
:已GrandchildId
,ChildId
和Quantity
由孙子实体实体框架筛选
最新最好的方法来检索一个父母的名单,他们有一个数量大于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();
如果您有100条父母记录,此**可能会执行变差,那么此类技术将为每条记录运行一次子查询,从而产生100个查询。请参阅关于N + 1查询的文献。 – AaronLS 2014-10-03 18:18:03