有没有一种方法可以在不分页的情况下获取 CRM 中给定类型的实体总数

Is there a way how to get total count of entities of given type in CRM without paging

假设我有这样的查询

var countAlias = "entity_count";
var query = FormattableString.Invariant($@" 
  <fetch distinct='false' aggregate='true'> 
    <entity name='{entityName}'> 
      <attribute name='createdon' alias='{countAlias}' aggregate='count'/> 
    </entity> 
  </fetch>");

var response = organizationService.RetrieveMultiple(new FetchExpression(query));
var entity = response.Entities.First();
var count = (int)((AliasedValue)entity[countAlias]).Value;

除非有超过 50K 条记录,否则这会很好地工作 - 然后它会达到聚合限制。 有没有一种方法可以在不分页的情况下查询系统中的实体总数?

很遗憾,简短的回答是

Fetchxml 是进行计数、求和等聚合的唯一选项 - 由于 performance consideration,它也有 50k 记录限制(上限可以针对本地设置)。

查询表达式,LINQ to CRM 聚合。这就是为什么我们从 MS 中选择分页 cookie 来迭代和计算记录。

或者,(不太可能)如果您通过推送数据同步来报告复制 sql 数据库,则可以及时完成一些作业的汇总计数。