internal void RegisterResourceProperty(MongoContext context, ResourceType resourceType, BsonElement element) { var collectionProperty = new CollectionProperty { CollectionType = resourceType, PropertyName = element.Name }; var resourceProperty = ResolveResourceProperty(resourceType, element); if (resourceProperty == null) { lock (unresolvedProperties) { var unresolvedEarlier = unresolvedProperties.Contains(collectionProperty); var resolvedNow = ResolveProviderType(element.Value, IsObjectId(element)) != null; if (!unresolvedEarlier && !resolvedNow) { this.unresolvedProperties.Add(collectionProperty); } else if (unresolvedEarlier && resolvedNow) { this.unresolvedProperties.Remove(collectionProperty); } if (resolvedNow) { AddResourceProperty(context, resourceType.Name, resourceType, element, resourceType.ResourceTypeKind == ResourceTypeKind.EntityType); } } } }
internal void RegisterResourceProperty(MongoContext context, ResourceType resourceType, BsonElement element) { var collectionProperty = new CollectionProperty { CollectionType = resourceType, PropertyName = element.Name }; var resourceProperty = ResolveResourceProperty(resourceType, element); if (resourceProperty == null) { lock (_unresolvedProperties) { var unresolvedEarlier = _unresolvedProperties.Contains(collectionProperty); var resolvedNow = ResolveProviderType(element.Value, IsObjectId(element)) != null; if (!unresolvedEarlier && !resolvedNow) _unresolvedProperties.Add(collectionProperty); else if (unresolvedEarlier && resolvedNow) _unresolvedProperties.Remove(collectionProperty); if (resolvedNow) { AddResourceProperty(context, resourceType.Name, resourceType, element, resourceType.ResourceTypeKind == ResourceTypeKind.EntityType); } } } }