/// <summary>
 /// Convert RelationshipDetails to JSON
 /// </summary>
 /// <param name="th"></param>
 /// <returns></returns>
 public static string ToJSON(this RelationshipDetailsModel th)
 {
     th.Attributes = th.Attributes.OrderBy(o => o.DisplayName).ToArray();
     using (MemoryStream memoryStream = new MemoryStream())
     {
         DataContractJsonSerializer serializer = new DataContractJsonSerializer(th.GetType());
         serializer.WriteObject(memoryStream, th);
         return(Encoding.UTF8.GetString(memoryStream.ToArray()));
     }
 }
        public RelationshipDetailsModel RetrieveRelationshipAdditionalDetails(string entityLogicalName, string attributeLogicalName, string intersectEntityName)
        {
            //Retorn
            var relationshipDetailsModel = new RelationshipDetailsModel();
            //Request Additional Details
            RetrieveEntityRequest request = new RetrieveEntityRequest()
            {
                LogicalName   = entityLogicalName.ToLower(),
                EntityFilters = EntityFilters.Default | EntityFilters.Attributes
            };
            RetrieveEntityResponse response = (RetrieveEntityResponse)ServiceAdmin.Execute(request);

            //Display Name
            relationshipDetailsModel.DisplayName = response.EntityMetadata.DisplayName.GetLabel(this.LanguageCode);

            //One To Many
            if (string.IsNullOrEmpty(intersectEntityName))
            {
                relationshipDetailsModel.Count = GetRecordsOneToMany(entityLogicalName, attributeLogicalName);
            }
            else
            {
                relationshipDetailsModel.Count = GetRecordsManyToMany(intersectEntityName, attributeLogicalName);
            }

            //Attributes
            if (relationshipDetailsModel.Count > 0)
            {
                relationshipDetailsModel.Attributes = GetAttributes(response);
            }
            else
            {
                relationshipDetailsModel.Attributes = new AttributeModel[0];
            }

            return(relationshipDetailsModel);
        }