fetchXml Dynamics 365,对链接实体和分页进行排序仅适用于第一页,而不适用于其他页面

时间:2018-10-09 08:46:56

标签: dynamics-crm microsoft-dynamics fetchxml dynamics-crm-webapi

以下查询在首页上工作正常

<fetch count="10" no-lock="true" page="1">
    <entity name="account">
        <attribute name="accountid" />
        <attribute name="name" />
        <link-entity name="contact" from="parentcustomerid" to="accountid" link-type="outer" alias="contact">
            <attribute name="contactid" />
            <attribute name="fullname" />
            <attribute name="jobtitle" />
            <attribute name="emailaddress1" />
            <attribute name="telephone1" />
            <attribute name="donotbulkemail" />
            <attribute name="donotphone" />
            <attribute name="telephone3" />
            <attribute name="mobilephone" />
            <attribute name="statuscode" />
            <attribute name="statecode" />
            <order attribute="lastname" />
        </link-entity>
    </entity>
</fetch>

对第二页的相同查询仅给出一条记录

<fetch count="10" no-lock="true" page="2">
    <entity name="account">
        <attribute name="accountid" />
        <attribute name="name" />
        <link-entity name="contact" from="parentcustomerid" to="accountid" link-type="outer" alias="contact">
            <attribute name="contactid" />
            <attribute name="fullname" />
            <attribute name="jobtitle" />
            <attribute name="emailaddress1" />
            <attribute name="telephone1" />
            <attribute name="donotbulkemail" />
            <attribute name="donotphone" />
            <attribute name="telephone3" />
            <attribute name="mobilephone" />
            <attribute name="statuscode" />
            <attribute name="statecode" />
            <order attribute="lastname" />
        </link-entity>
    </entity>
</fetch>

不知道,第二个及以后的页面请求出了什么问题?

如果我从链接实体中删除了order attribute,那么它工作正常。

1 个答案:

答案 0 :(得分:0)

您使用的是分页Cookie吗?在这种情况下,如果每个帐户都返回了多行,那将是行不通的。

  

When not to use paging cookies

     

分页cookie取决于常见的情况,其中返回的每一行代表一个唯一的实体记录。那里   您可以使用链接实体构建的一些查询将提供   合并主要实体和相关实体的数据的行。   这将导致多个主要实体行引用   相同的主键值。如果您在此依靠分页Cookie   情况下您将获得不一致的结果。

我解决此问题的首选方法是“翻转”查询:与您的主要实体联系并改为链接到帐户(假设这对您来说是一个合适的查询)。您的查询将如下所示:

<fetch count="10" no-lock="true" page="1">
    <entity name="contact">
        <attribute name="contactid" />
        <attribute name="fullname" />
        <attribute name="jobtitle" />
        <attribute name="emailaddress1" />
        <attribute name="telephone1" />
        <attribute name="donotbulkemail" />
        <attribute name="donotphone" />
        <attribute name="telephone3" />
        <attribute name="mobilephone" />
        <attribute name="statuscode" />
        <attribute name="statecode" />
        <order attribute="lastname" />
        <link-entity name="account" from="accountid" to="parentcustomerid" link-type="outer" alias="account">
            <attribute name="accountid" />
            <attribute name="name" />
        </link-entity>
    </entity>
</fetch>