private void ReadPropertiesMetadataProperty(IODataJsonReaderEntryState entryState, ref ODataJsonReaderUtils.MetadataPropertyBitMask metadataPropertiesFoundBitField) { if (!base.ReadingResponse || (base.MessageReaderSettings.MaxProtocolVersion < ODataVersion.V3)) { base.JsonReader.SkipValue(); } else { ODataJsonReaderUtils.VerifyMetadataPropertyNotFound(ref metadataPropertiesFoundBitField, ODataJsonReaderUtils.MetadataPropertyBitMask.Properties, "properties"); if (base.JsonReader.NodeType != JsonNodeType.StartObject) { throw new ODataException(Microsoft.Data.OData.Strings.ODataJsonEntryAndFeedDeserializer_PropertyInEntryMustHaveObjectValue("properties", base.JsonReader.NodeType)); } base.JsonReader.ReadStartObject(); while (base.JsonReader.NodeType == JsonNodeType.Property) { string associationLinkName = base.JsonReader.ReadPropertyName(); ValidationUtils.ValidateAssociationLinkName(associationLinkName); ReaderValidationUtils.ValidateNavigationPropertyDefined(associationLinkName, entryState.EntityType, base.MessageReaderSettings); base.JsonReader.ReadStartObject(); while (base.JsonReader.NodeType == JsonNodeType.Property) { if (string.CompareOrdinal(base.JsonReader.ReadPropertyName(), "associationuri") == 0) { string propertyValue = base.JsonReader.ReadStringValue("associationuri"); ODataJsonReaderUtils.ValidateMetadataStringProperty(propertyValue, "associationuri"); ODataAssociationLink associationLink = new ODataAssociationLink { Name = associationLinkName, Url = base.ProcessUriFromPayload(propertyValue) }; ValidationUtils.ValidateAssociationLink(associationLink); entryState.DuplicatePropertyNamesChecker.CheckForDuplicatePropertyNames(associationLink); ReaderUtils.AddAssociationLinkToEntry(entryState.Entry, associationLink); } else { base.JsonReader.SkipValue(); } } base.JsonReader.ReadEndObject(); } base.JsonReader.ReadEndObject(); } }