Избегайте псевдонимов в результате FetchXml со связанными объектами - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть следующий FetchXML:

<fetch>
<entity name="list" >
    <attribute name="listname" />
    <attribute name="listid" alias="List" />
    <filter type="and" >
        <condition attribute="listname" operator="eq" value="Test 1" />
    </filter>
    <link-entity name="listmember" from="listid" to="listid" intersect="true" alias="listmember" >
        <attribute name="entitytype" />
        <attribute name="listmemberid" />
        <attribute name="entityid" />
        <link-entity name="contact" from="contactid" to="entityid" alias="contact" >
            <attribute name="contactid" />
            <attribute name="owneridname" />
            <attribute name="owneridtype" />
            <attribute name="ownerid" />
        </link-entity>
    </link-entity>
</entity>

Результат выглядит следующим образом:

<resultset morerecords="0" paging-cookie="&lt;cookie page=&quot;1&quot;&gt;&lt;listid lastnull=&quot;1&quot; firstnull=&quot;1&quot; /&gt;&lt;/cookie&gt;">
  <result>
    <listname>Test 1</listname>
    <listmember.entitytype formattedvalue="2">2</listmember.entitytype>
    <listmember.listmemberid>{6739D9B9-xxxx-xxxx-xxxx-000D3A3852A3}</listmember.listmemberid>
    <listmember.entityid type="2">{039FD4C6-xxxx-xxxx-xxxx-000D3A385A1C}</listmember.entityid>
    <contact.contactid>{039FD4C6-xxxx-xxxx-xxxx-000D3A385A1C}</contact.contactid>
    <contact.ownerid name="CRM Test" dsc="" type="8" yomi="CRM Test">{5ABA5CBA-xxxx-xxxx-xxxx-D472F64781F6}</contact.ownerid>
</result>
</resultset>

Моя проблема в том, что у меня есть общий способполучить атрибуты, возвращаемые FetchXml.Но поскольку этот объект связан с объектами, псевдонимы добавляются к результату, например:

<listmember.listmemberid>

Таким образом, мое извлечение выдаст ошибку, так как я ищу "listmemberid"

Есть лиспособ избежать добавления этих псевдонимов к результату?Тем более что имена атрибутов уникальны?

Есть какие-нибудь идеи, чтобы обойти эту проблему?

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Единственная опция для переопределения alias столбца выбора, которая работает - когда вы выполняете функцию агрегирования, и я протестировал приведенный ниже рабочий пример.

<fetch top="50" aggregate="true" >
  <entity name="account" >
    <attribute name="businesstypecode" alias="test" groupby="true" />
    <link-entity name="contact" from="accountid" to="accountid" link-type="inner" alias="acc" >
      <attribute name="accountrolecode" alias="testing" groupby="true" />
    </link-entity>
  </entity>
</fetch>

Результат:

test    testing
1       3
1   

Это не сработало.Я не знаю почему, может быть ограничение fetchxml.

<fetch top="50" >
  <entity name="contact" >
    <attribute name="fullname" />
    <link-entity name="account" from="accountid" to="accountid" alias="acct" >
      <attribute name="name" alias="acctNAME" />
    </link-entity>
  </entity>
</fetch>

Результат:

fullname        acct.name
arun account    arun account

Даже с выражением запроса вы получите специальный тип данных, называемый AliasedValue, для обработкиэто, так что это намеренное поведение. Читать дальше

1 голос
/ 25 сентября 2019

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

Я могу предложить, если вам нужны данные только из сущности ListMember, а не из List иcontact, создайте свой выбор на основе сущности члена списка, такой как

select * from listmember where listname="Test 1"

Но как только вам понадобятся данные от связанной сущности, эта связанная сущность будет иметь псевдоним.

...