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; }