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;
        }
Ejemplo n.º 2
0
        /// <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);
        }