Получить все записи в одном запросе - PullRequest
0 голосов
/ 01 апреля 2019

Я создал (1) 2 аккаунта (1-й будет родителем 2-го аккаунта) (2) Создано 2 контакта (ассоциированный 1-й контакт будет 1-й учетной записью и 2-й контакт с 2-й учетной записью) (3) Создал одну заметку и связал ее с родительской учетной записью (4) Создал две заметки и связал их со 2-м контактом

и теперь я хочу получить все записи в одном запросе ..

Я пытался, но не получил результата ..

var fetch = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>" +
                  "<entity name='account'>" +
                    "<attribute name='name' />" +
                    "<attribute name='primarycontactid' />" +
                    "<attribute name='telephone1' />" +
                    "<attribute name='accountid' />" +
                    "<order attribute='name' descending='false' />" +
                    "<link-entity name='contact' from='parentcustomerid' to='accountid' link-type='inner' alias='bd'>" +
                    "<attribute name='fullname' />" +
                      "<link-entity name='annotation' from='objectid' to='contactid' link-type='inner' alias='be'>" +
                        "<filter type='and'>" +
                          "<condition attribute='subject' operator='not-null' />" +
                        "</filter>" +
                      "</link-entity>" +
                    "</link-entity>" +
                  "</entity>" +
                "</fetch>";

 EntityCollection Coll = CrmConn.RetrieveMultiple(new FetchExpression(fetch));

                foreach (Entity acunt in Coll.Entities)
                {
                    Console.WriteLine("Name of Account: " + acunt.GetAttributeValue<string>("name"));
                    Console.WriteLine("Name of Contact: "  +acunt.GetAttributeValue<string>("fullname"));
                    Console.WriteLine("Name of Notes: " + acunt.GetAttributeValue<string>("subject"));
                    //Console.WriteLine("contact: ", Coll.Entities[]);
                 }

Отображается только имя учетной записи, не отображаются заметки и контакт

1 Ответ

0 голосов
/ 02 апреля 2019

ОК, используйте приведенный ниже запрос, чтобы получить только учетные записи и связанные с ними контакты.Я мог бы восстановить учетные записи и связанные с ними контакты.Теперь возьмите эти учетные записи и их ID и используйте 2-й запрос для получения заметок (аннотаций). То же самое вы сделаете для Notes.

<fetch>
  <entity name="account" >
    <attribute name="name" />
    <link-entity name="contact" from="parentcustomerid" to="accountid" link-type="inner" >
      <attribute name="fullname" />
    </link-entity>
  </entity>
</fetch>

Запрос на получение заметок:

<fetch>
  <entity name="annotation" >
    <attribute name="filename" />
    <attribute name="documentbody" />
    <attribute name="isdocument" />
    <link-entity name="account" from="accountid" to="objectid" link-type="inner" >
      <filter type="and" >
        <condition attribute="accountid" operator="eq" value="AccountGuid" />
      </filter>
    </link-entity>
  </entity>
</fetch>

Пример сКод C #

string fetch = @"  
   <fetch>
  <entity name='account' >
    <attribute name='name' />
    <link-entity name='contact' from='parentcustomerid' to='accountid' link-type='inner' alias='Contact' >
      <attribute name='fullname' alias = 'Contact.Fullname' />
    </link-entity>
  </entity>
</fetch> ";

           EntityCollection Coll = CrmConn.RetrieveMultiple(new FetchExpression(fetch));

                foreach (Entity acunt in Coll.Entities)
                {
                    Console.WriteLine("Name of Account: " + acunt.GetAttributeValue<string>("name"));
                    Console.WriteLine("Name of Contact: "  + acunt.GetAttributeValue<AliasedValue>("Contact.Fullname").Value);
                 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...