예제 #1
0
        protected override void UpdateConfiguration(WebRouteConfiguration configuration)
        {
            IList <IODataQueryOptionsParser> queryOptionsParsers = ODataQueryOptionsParserFactory.Create();

            queryOptionsParsers.Insert(0, new CustomODataQueryOptionsParser());

            configuration.Routes.Clear();
            configuration.Count().Filter().OrderBy().Expand().MaxTop(null).Select();
            configuration.MapODataServiceRoute(
                "odata",
                "odata",
                configureAction: containerBuilder => containerBuilder
                .AddService(Microsoft.OData.ServiceLifetime.Singleton, typeof(IEdmModel),
                            _ => GetEdmModel(configuration))
                .AddService(Microsoft.OData.ServiceLifetime.Singleton, typeof(IODataPathHandler),
                            _ => new DefaultODataPathHandler())
                .AddService(Microsoft.OData.ServiceLifetime.Singleton, typeof(IEnumerable <IODataRoutingConvention>),
                            _ => ODataRoutingConventions.CreateDefault())
                .AddService(Microsoft.OData.ServiceLifetime.Singleton, typeof(IEnumerable <IODataQueryOptionsParser>),
                            _ => queryOptionsParsers)
                );
        }
        public void PlainTextODataQueryOptionsParser_IsReturnedBy_ODataQueryOptionsParserFactory()
        {
            var parsers = ODataQueryOptionsParserFactory.Create();

            Assert.Contains(parsers, p => p.GetType().Equals(typeof(PlainTextODataQueryOptionsParser)));
        }
예제 #3
0
        /// <summary>
        /// Create a container builder with the default OData services.
        /// </summary>
        /// <returns>An instance of <see cref="IContainerBuilder"/> to manage services.</returns>
        protected IContainerBuilder CreateContainerBuilderWithCoreServices()
        {
            IContainerBuilder builder;
            if (this.BuilderFactory != null)
            {
                builder = this.BuilderFactory();
                if (builder == null)
                {
                    throw Error.InvalidOperation(SRResources.NullContainerBuilder);
                }
            }
            else
            {
                builder = new DefaultContainerBuilder();
            }

            builder.AddDefaultODataServices();

            // Set Uri resolver to by default enabling unqualified functions/actions and case insensitive match.
            builder.AddService(
                ServiceLifetime.Singleton,
                typeof(ODataUriResolver),
                sp => new UnqualifiedODataUriResolver { EnableCaseInsensitive = true });
            // Add parsers for requests targeted at resource paths ending in $query
            builder.AddService(ServiceLifetime.Singleton, typeof(IEnumerable<IODataQueryOptionsParser>), sp => ODataQueryOptionsParserFactory.Create());

            return builder;
        }