public ODataContext(Func <IEnumerable <ConfigureODataConventionModelBuilder> > conventions) { var services = new ServiceCollection(); services.AddMvcCore(); services.AddOData(); services.AddTransient <ODataUriResolver>(); services.AddTransient <ODataQueryValidator>(); services.AddTransient <TopQueryValidator>(); services.AddTransient <FilterQueryValidator>(); services.AddTransient <SkipQueryValidator>(); services.AddTransient <OrderByQueryValidator>(); services.AddTransient <CountQueryValidator>(); services.AddTransient <SelectExpandQueryValidator>(); services.AddTransient <SkipTokenQueryValidator>(); Services = services.BuildServiceProvider(); var routeBuilder = new RouteBuilder(new ApplicationBuilder(Services)); routeBuilder .Count() .Expand() .Filter() .MaxTop(null) .OrderBy() .Select() .SkipToken(); routeBuilder.EnableDependencyInjection(); _model = new Lazy <IEdmModel>(() => { var builder = new ODataConventionModelBuilder(Services); foreach (var convention in conventions()) { convention.Configure(builder); } return(builder.GetEdmModel()); }); }