/// <summary>
        /// Associates one or more entities to an entity.
        /// </summary>
        /// <param name="service"></param>
        /// <param name="entity"></param>
        /// <param name="relationshipLogicalName"></param>
        /// <param name="token"></param>
        /// <param name="entities"></param>
        public static Task AssociateAsync(this IOrganizationServiceAsync2 service, Entity entity, string relationshipLogicalName,
                                          CancellationToken token = default, params Entity[] entities)
        {
            var relationship = new Relationship(relationshipLogicalName);

            if (entity.LogicalName == entities.First().LogicalName)
            {
                relationship.PrimaryEntityRole = EntityRole.Referenced;
            }

            return(service.AssociateAsync(entity.LogicalName, entity.Id,
                                          relationship,
                                          new EntityReferenceCollection(entities.Select(e => e.ToEntityReference()).ToList()), token));
        }
 /// <summary>
 /// Associates one or more entities to an entity.
 /// </summary>
 /// <param name="service"></param>
 /// <param name="entity"></param>
 /// <param name="relationshipLogicalName"></param>
 /// <param name="entities"></param>
 public static Task AssociateAsync(this IOrganizationServiceAsync2 service, Entity entity, string relationshipLogicalName, params Entity[] entities)
 {
     return(service.AssociateAsync(entity, relationshipLogicalName, default, entities));