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))); }
/// <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; }