示例#1
0
        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());
            });
        }