【发布时间】:2025-11-19 00:15:02
【问题描述】:
简介
就像与 nhibernate 相关的 this question 一样,我想知道 Entity Framework 6 是否存在类似的东西。我做了一些研究,但没有发现任何可用的东西。
除了使用.Skip(x) 和.Take(y) 查询分页结果之外,我们还希望在应用分页之前获取与我们的where 子句 匹配的所有项目的计数。
我们现在将应用了 where 子句的 LINQ 查询放在一个变量中,因此我们可以使用它两次,一次获取计数,一次获取分页结果。 p>
但出于性能原因,我们希望在一个查询中同时执行这两项操作,就像在 RAW SQL 查询中使用 COUNT(*) OVER() 一样。
问题
实体框架是否以某种方式支持COUNT(*) OVER()?如果没有,您能否指点一下从哪里开始寻找实现这一点。
提案
首先我想创建一个IQueryable<T> 扩展方法:CountOver(out long totalCount),但这可能行不通,因为我们仍在构建查询。
然后我考虑引入一个属性[CountOver],我们可以在我们的实体模型中使用它:
public class Person
{
public string Fullname { get; set; }
[CountOver]
public long TotalCount { get; set; }
}
如果我们可以修改源代码,后者将不会那么难实现,但目前我不知道这是否可能......
【问题讨论】:
标签: c# entity-framework entity-framework-6 linq-to-entities