C# 如何更快地分组和计数子实体?
我的查询很慢 我已经编写了以下查询,这个查询给了我预期的结果C# 如何更快地分组和计数子实体?,c#,entity-framework,linq,C#,Entity Framework,Linq,我的查询很慢 我已经编写了以下查询,这个查询给了我预期的结果 dbContext.ParentEntity.GroupBy(x => new { x.Propery1, x.Propery2}, (key, group) => new { Propery_1= key.Propery1, Propery_2= key.Propery2, Count = group.
dbContext.ParentEntity.GroupBy(x => new { x.Propery1, x.Propery2}, (key, group) => new
{
Propery_1= key.Propery1,
Propery_2= key.Propery2,
Count = group.Sum(x => x.Level1Childs.SelectMany(x => x.Level2Childs.SelectMany(x => x.Level3Childs).Where(x => x.IssuposedToBeCounted()).Count())
}).ToList()
它向数据库发出x.Propery1.count*x.Propery2.count请求。。。
如何重写查询以使其更快?这称为N+1问题。尝试一次从数据库获取所有数据,然后做任何您想做的事情。
例如,在ORM工具中,这通常源于延迟加载,通常它应该在一个查询中完成。如果您使用group by和select语句
Where(x=>x.IssuposedToBeCounted())
执行此操作,则可能会导致您的查询在客户端强制求值,而不是将其转换为SQL语句