获取XML中的链接实体的聚合计数不会返回0

时间:2012-08-28 16:10:17

标签: dynamics-crm-2011 fetchxml

问题

我有一个Fetch XML查询,它对链接实体的聚合计数不符合预期。基本上我正在返回课程列表,并计算当前为该课程注册的联系人数,但即使没有人注册该课程,我也会得到1个已注册的联系人。如果我注册1个联系人,我得到1个计数。如果我注册了5个联系人,我得到5个计数,所以当没有相关记录时,问题似乎解决了无法得到0的计数

这是Fetch XML

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false" aggregate="true">
  <entity name="new_coursesection">
    <attribute name="new_termscheduleid" groupby="true" alias="new_termscheduleid" />
    <attribute name="new_termid" groupby="true" alias="new_termid" />
    <attribute name="new_sectionname" groupby="true" alias="new_sectionname" />
    <attribute name="new_name" groupby="true" alias="new_name" />
    <filter type="and">
      <condition attribute="new_courseid" operator="eq" value="{some guid}" />
      <condition attribute="statecode" operator="eq" value="0" />
    </filter>
    <link-entity name="new_contactcoursesection" from="new_coursesectionid" to="new_coursesectionid" alias="new_contactcoursesection1" link-type="outer">
      <attribute name="new_contactcoursesectionid" aggregate="count" alias="coursecount" />
      <filter>
        <condition attribute="statecode" operator="eq" value="0"/>
      </filter>
      <order alias="coursecount" descending="true" />
    </link-entity>
  </entity>
</fetch>

是否有人遇到此问题并知道解决方法?

1 个答案:

答案 0 :(得分:11)

在启用跟踪日志的情况下查看生成的SQL后,找出问题所在。不得不把计数改为countcolumn:

<attribute name="new_contactcoursesectionid" aggregate="count" alias="coursecount" />

修复

<attribute name="new_contactcoursesectionid" aggregate="countcolumn" alias="coursecount" />

虽然我认为在处理FetchXML中链接实体的聚合值时,CRM 2011中存在一个错误。即使它标有别名,Attribute集合中的AliasedValue也将使用实际的CRM名称,而不是别名,即使AttributeCollection的键将正确使用别名。奇怪的...