Разработка
20
Июл
0

CreateMultiEntityAssociation

Продолжаем серию постов по оптимизации запросов CRM. На этот раз нас ждет CreateMultiEntityAssociation.

Метод CreateMultiEntityAssociation позволяет одним запросом соединить множество записей 1:N. Т.е., например, Вы можете с помощью него соединить с одной записью Контакта множество записей Возможных сделок. В классическом варианте мы бы обновляли все множество Возможных сделок по одной, проставляя в каждую из них один и тот же Контакт. А так мы будем экономить на запросах, а, следовательно, и на производительности сервера.

using System;
using System.Collections.Generic;

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Xrm.Sdk.Query;

using System.ServiceModel;
using System.ServiceModel.Description;
using System.Runtime.Serialization;
using Microsoft.Xrm.Tooling.Connector;

namespace CreateMultiEntityAssociationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // Подключаемся к CRM
            ClientCredentials credentials = new ClientCredentials();
            credentials.Windows.ClientCredential = new System.Net.NetworkCredential("Administrator", "1qaz@WSX", "D2012");
            Uri uri = new Uri("http://crm2015/superfirma/XRMServices/2011/Organization.svc");
            OrganizationServiceProxy proxy = new OrganizationServiceProxy(uri, null, credentials, null);
            proxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
            CrmServiceClient crmServiceClient = new CrmServiceClient(proxy);

            // Список записей которые будем соединять с одной
            List<Guid> lstOpportunityGuid = new List<Guid>();
            lstOpportunityGuid.Add(new Guid("1395A838-26F4-E411-80B7-000C291AFB9D"));
            lstOpportunityGuid.Add(new Guid("1595A838-26F4-E411-80B7-000C291AFB9D"));
            lstOpportunityGuid.Add(new Guid("1B95A838-26F4-E411-80B7-000C291AFB9D"));

            // Массово связываем записи
            crmServiceClient.CreateMultiEntityAssociation(
                "contact", 
                new Guid("EF93A838-26F4-E411-80B7-000C291AFB9D"),
                "opportunity", 
                lstOpportunityGuid, 
                "opportunity_customer_contacts"
                );            
        }
    }
}

В метод CreateMultiEntityAssociation передаются 5 параметров:

  • targetEntity: имя объекта, запись одну которого нужно будет связать с множеством других;
  • targetEntity1Id: GUID записи, с которой необходим связать множество других;
  • sourceEntityName: имя объекта, множество записей которого необходимо связать с одной;
  • sourceEntitieIds: массив GUID’ов записей, которые нужно связать с одной;
  • relationshipName: имя связи, которая связывает исходный и целевой объект.


Комментарии (0)

*

code