Entity Framework 7 分组依据
Posted
技术标签:
【中文标题】Entity Framework 7 分组依据【英文标题】:Entity Framework 7 group by 【发布时间】:2015-06-05 13:32:49 【问题描述】:我正在尝试运行以下代码,但是当我检查 SQL 分析器时,它看起来像是在表上运行了一个完整的选择,然后在它从数据库返回所有结果后进行分组。任何帮助表示赞赏。
var result = _dbContext.LogEvent.GroupBy(x => x.EventLevel)
.Select(g => new
eventType = g.Key,
total = g.Sum(i => i.Occurrences)
)
.ToList();
【问题讨论】:
您可以发布您在分析器中看到的生成的 SQL 吗? 它只是执行“从 LogEvent 中选择 column1、column2、column3、column4”。 SQL 中没有分组或求和。 我希望看到,如果您执行类似_dbContext.LogEvent.AsEnumerable()...
或_dbContext.LogEvent.ToList()...
之类的操作,那么在编写查询时,应该会生成适当的SQL。您可以尝试以下方法:var query = = _dbContext.LogEvent.GroupBy(x => x.EventLevel).Select(g => new eventType = g.Key, total = g.Sum(i => i.Occurrences) ); Debug.Write(query.ToString());
【参考方案1】:
更新:
下面链接的问题已关闭,计划用于 EF 2.1.0。您现在应该可以使用 Preview 包试用它了!
原答案:
It doesn't look like this is currently supported,但似乎有人看到了这篇文章并创建了链接问题。
这个概念是一个相当复杂的逻辑,EF7 处于非常早期的阶段。 .Net 的 GroupBy
不会直接转换为 SQL 的 GROUP BY
,除非您只使用聚合或 Select
中的键来跟踪它。如果你有野心,你可以提供一个 pull request,或者continue to use EF6.
【讨论】:
是的,我认为它还没有完成。我正在查看源代码,有一些东西被注释掉了。我现在可以解决这个问题。谢谢。 将在 EF Core 2.1 中得到支持:blogs.msdn.microsoft.com/dotnet/2018/02/02/…【参考方案2】:它可能不会很快得到支持 - 不幸的是。会引起很多挫折,因为很多人不阅读发行说明,并且很自然地认为它会像以前一样工作(EF6 / Linq2SQL)。
我意识到它对于涉及整个实体的更复杂的事情可能很复杂,但很遗憾它甚至不支持像你这样的简单查询:-(
https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-entity-framework-core-rc2/
【讨论】:
以上是关于Entity Framework 7 分组依据的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework Core 7.0 未来规划