public EntryDetails ParseEntryDetails(string collectionName, IDictionary <string, object> entryData, string contentId = null)
        {
            var entryDetails = new EntryDetails();

            foreach (var item in entryData)
            {
                if (this.HasStructuralProperty(collectionName, item.Key))
                {
                    entryDetails.AddProperty(item.Key, item.Value);
                }
                else if (this.HasNavigationProperty(collectionName, item.Key))
                {
                    if (this.IsNavigationPropertyCollection(collectionName, item.Key))
                    {
                        if (item.Value == null)
                        {
                            entryDetails.AddLink(item.Key, null, contentId);
                        }
                        else
                        {
                            var collection = item.Value as IEnumerable <object>;
                            if (collection != null)
                            {
                                foreach (var element in collection)
                                {
                                    entryDetails.AddLink(item.Key, element, contentId);
                                }
                            }
                        }
                    }
                    else
                    {
                        entryDetails.AddLink(item.Key, item.Value, contentId);
                    }
                }
                else if (this.IsOpenType(collectionName))
                {
                    entryDetails.HasOpenTypeProperties = true;
                    entryDetails.AddProperty(item.Key, item.Value);
                }
                else if (!this.Session.Settings.IgnoreUnmappedProperties)
                {
                    throw new UnresolvableObjectException(item.Key, $"No property or association found for [{item.Key}].");
                }
            }

            return(entryDetails);
        }
        public EntryDetails ParseEntryDetails(string collectionName, IDictionary<string, object> entryData, string contentId = null)
        {
            var entryDetails = new EntryDetails();

            foreach (var item in entryData)
            {
                if (this.HasStructuralProperty(collectionName, item.Key))
                {
                    entryDetails.AddProperty(item.Key, item.Value);
                }
                else if (this.HasNavigationProperty(collectionName, item.Key))
                {
                    if (this.IsNavigationPropertyCollection(collectionName, item.Key))
                    {
                        if (item.Value == null)
                        {
                            entryDetails.AddLink(item.Key, null, contentId);
                        }
                        else
                        {
                            var collection = item.Value as IEnumerable<object>;
                            if (collection != null)
                            {
                                foreach (var element in collection)
                                {
                                    entryDetails.AddLink(item.Key, element, contentId);
                                }
                            }
                        }
                    }
                    else
                    {
                        entryDetails.AddLink(item.Key, item.Value, contentId);
                    }
                }
                else if (this.IsOpenType(collectionName))
                {
                    entryDetails.AddProperty(item.Key, item.Value);
                }
                else if (!this.Session.Settings.IgnoreUnmappedProperties)
                {
                    throw new UnresolvableObjectException(item.Key, String.Format("No property or association found for [{0}].", item.Key));
                }
            }

            return entryDetails;
        }