private static IEdmEntityType CreateModelAndGetEdmType(ResourceType resourceType) { var provider = new DataServiceProviderSimulator(); DataServiceSimulator dataService = new DataServiceSimulator(); DataServiceStaticConfiguration staticConfiguration = new DataServiceStaticConfiguration(dataService.Instance.GetType(), provider); IDataServiceProviderBehavior providerBehavior = DataServiceProviderBehavior.CustomDataServiceProviderBehavior; DataServiceProviderWrapper providerWrapper = new DataServiceProviderWrapper( new DataServiceCacheItem( new DataServiceConfiguration(provider), staticConfiguration), provider, provider, dataService, false); dataService.Provider = providerWrapper; var model = new MetadataProviderEdmModel(providerWrapper, new DataServiceStreamProviderWrapper(dataService), DataServiceActionProviderWrapper.Create(dataService)); dataService.ProcessingPipeline = new DataServiceProcessingPipeline(); model.MetadataProvider.ProviderBehavior = providerBehavior; var edmType = model.EnsureSchemaType(resourceType) as IEdmEntityType; return edmType; }
/// <summary> /// Creates an instance of <see cref="SelectItem"/> to represent the selection of the given property. /// </summary> /// <param name="metadataProviderEdmModel">The metadata provider-based edm model.</param> /// <param name="targetResourceType">The resource type the property is being selected for.</param> /// <param name="property">The property being selected.</param> /// <param name="typeSegments">Type segments seen in the path so far.</param> /// <returns>A new <see cref="SelectItem"/> to represent the selection of the given property.</returns> private static SelectItem CreatePropertySelection(MetadataProviderEdmModel metadataProviderEdmModel, ResourceType targetResourceType, ResourceProperty property, ICollection<TypeSegment> typeSegments) { var structuredType = (IEdmStructuredType)metadataProviderEdmModel.EnsureSchemaType(targetResourceType); IEdmProperty edmProperty = structuredType.FindProperty(property.Name); var edmStructuralProperty = edmProperty as IEdmStructuralProperty; Segment lastSegment; if (edmStructuralProperty != null) { lastSegment = new PropertySegment(edmStructuralProperty); } else { lastSegment = new NavigationPropertySegment((IEdmNavigationProperty)edmProperty); } var path = CreatePath(typeSegments, lastSegment); return new PathSelectItem(path); }