fetchXml Dynamics 365 с сортировкой по ссылочной сущности и подкачкой, работающей только для первой страницы, но не для других - PullRequest
0 голосов
/ 09 октября 2018

следующий запрос работает нормально для первой страницы

<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>

Не знаю, что не так со второй и следующей страницейrequest?

Если я удаляю order attribute из объекта ссылки, то он работает нормально.

1 Ответ

0 голосов
/ 09 октября 2018

Вы используете пейджинговый cookie?Это не будет работать в этом случае, когда для каждой учетной записи возвращено несколько строк.

Когда не использовать файлы cookie для пейджинга

Пейджинговые куки-файлы зависят от общего случая, когда каждая возвращаемая строка представляет уникальную запись объекта.Существуют некоторые запросы, которые вы можете создать с помощью link-entity, который будет предоставлять строки, объединяющие данные из первичного объекта со связанными объектами.Это приведет к нескольким строкам первичного объекта, которые ссылаются на одно и то же значение первичного ключа.Если в этой ситуации вы зависите от файлов 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>
...