有没有一种方法可以在不分页的情况下获取 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 数据库,则可以及时完成一些作业的汇总计数。
假设我有这样的查询
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
或者,(不太可能)如果您通过推送数据同步来报告复制 sql 数据库,则可以及时完成一些作业的汇总计数。