我正在使用RiaServices使用EntityQuery填充网格。
由于我的数据库有数百万行,我想只查询当前页面,还要为查询目的提供总行数。
Ex:总共100行
entityQuery.Skip(0).Take(10); //for the first page
entityQuery.IncludeTotalCount = true;
这给我带来了10行,而loadOperation.TotalEntityCount = 100.完美。
但想象一下:
Ex:总共100行
entityQuery.Where(p => Id >= 1 && p.Id <= 50).Skip(0).Take(10); //with filter now
entityQuery.IncludeTotalCount = true;
这给我带来了10行,而loadOperation.TotalEntityCount = 100(我需要50行!)
以下是问题:出于分页目的,我需要满足我的过滤器的实体总数,而不是所有实体。
是否可以更改“IncludeTotalCount”的查询,还是应该忘记TotalEntityCount并查询服务器两次?
干杯,
AndréCarlucci
答案 0 :(得分:1)
RIA Services通过剥离skip / take分页指令(正如您所期望的那样)处理总计数请求,并将未分页的查询传递给受保护的虚拟DomainService.Count方法。我建议覆盖此方法,设置断点,以便验证是否将正确的计数查询传递给您的服务。如果您正在使用EF DomainService,Count的基本实现将只执行query.Count()。所以事情应该像你期望的那样 - 我不确定他们为什么不这样做。你使用什么类型的DomainService?