Esempio n. 1
0
        /// <summary>
        /// Builds an Entity Data Model used by the message router and controllers.
        /// </summary>
        /// <returns>An Entity Data Model.</returns>
        /// <remarks>
        /// DTOs need an EntitySet so that the OData controller can 'magically' parse the json into an object.
        /// Only ONE DTO can be bound per table, so a BaseDto object is needed.
        /// </remarks>
        ///
        private static IEdmModel GetImplicitEdm()
        {
            var builder = new ODataConventionModelBuilder();

            builder.EntitySet <LocationBaseDto>("Locations");
            builder.EntitySet <LocationLogEntryBaseDto>("LocationLogEntries");
            builder.EntitySet <LocationTypeBaseDto>("LocationTypes");
            builder.EntitySet <DashboardBaseDto>("Dashboards");
            builder.EntitySet <DashboardOptionBaseDto>("DashboardOptions");

            builder.EntitySet <UnitTypeBaseDto>("UnitTypes");
            builder.EntitySet <UnitTypeGroupQueryDto>("UnitTypeGroups");
            builder.EntitySet <ParameterTypeQueryDto>("ParameterTypes");
            builder.EntitySet <ParameterQueryDto>("Parameters");
            builder.EntitySet <ParameterValidRangeQueryDto>("ParameterValidRanges");
            builder.EntitySet <LimitTypeQueryDto>("LimitTypes");
            builder.EntitySet <ChemicalFormTypeQueryDto>("ChemicalFormTypes");
            builder.EntitySet <InAppMessageBaseDto>("InAppMessages");

            // Adding the Extensions Namespace and Custom Function for In-App Messages
            // See https://github.com/OData/WebApi/issues/766 for an explanation of why
            // ReturnsCollectionFromEntitySet is required for this function
            var inAppMessages = builder.EntityType <InAppMessageBaseDto>()
                                .Collection
                                .Function("GetByUserId")
                                .ReturnsCollectionFromEntitySet <InAppMessageBaseDto>("InAppMessages");

            inAppMessages.Parameter <Guid>("userId");

            inAppMessages.Namespace = "Extensions";

            builder.EnableLowerCamelCase();

            return(builder.GetEdmModel());
        }
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
                app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "dotnet5_odata v1"));
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            var builder = new ODataConventionModelBuilder();

            builder.EnableLowerCamelCase();
            builder.EntitySet <Foo>("Foos");

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.Select().Filter();
                endpoints.MapODataRoute("odata", "odata", builder.GetEdmModel());
                endpoints.EnableDependencyInjection();
            });
        }
        public static void Register(HttpConfiguration config)
        {
			// Web API configuration and services
			// TOOD: change it in production
			var cors = new EnableCorsAttribute("*", "*", "*");
			config.EnableCors(cors);

			// Web API routes
			config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

			var builder = new ODataConventionModelBuilder();
			builder.EnableLowerCamelCase();
			config.Formatters.Add(new FlatFormatter(new QueryStringMapping("$format", "flat", "application/json")));
			builder.EntitySet<Namespace>("Namespaces");
			builder.EntitySet<Translation>("Translations");
			config.MapODataServiceRoute(
				routeName: "ODataRoute",
				routePrefix: null,
				model: builder.GetEdmModel());
		}
        protected override void Initialize(HttpConfiguration configuration)
        {
            var builder = new ODataConventionModelBuilder();

            builder.Namespace = "Unit.Test";
            builder.EnableLowerCamelCase();

            var address = builder.ComplexType <Address>();
            var people  = builder.EntitySet <Person>("People");
            var person  = people.EntityType;

            address.Namespace = builder.Namespace;
            address.HasAnnotation(a => a.IsPrimary);

            people.HasAnnotation("Version", 2.0);
            people.HasComplexAnnotations("Links", new[] { new Link("help", new Uri("http://localhost/api/help")) });

            person.Namespace = builder.Namespace;
            person.HasKey(p => p.Id);
            person.HasAnnotation(p => p.Timestamp);
            person.HasAnnotation(p => p.Flags);
            person.HasAnnotations(p => p.SeoTerms);
            person.HasComplexAnnotations(p => p.Links);
            person.Ignore(p => p.PhotoImage);
            person.Ignore(p => p.PhotoImageType);
            person.HasAnnotation(p => p.Birthday).ForProperty(p => p.Age);
            person.HasComplexAnnotation(p => p.DisplayStyle).ForProperty(p => p.FirstName);

            var model = builder.GetEdmModelWithAnnotations();

            configuration.EnableCaseInsensitive(true);
            configuration.EnableInstanceAnnotations();
            configuration.MapODataServiceRoute("odata", "api", model);
        }
        public override IEdmModel GetModel(Type elementClrType, HttpRequestMessage request,
            HttpActionDescriptor actionDescriptor)
        {
            // Get model for the request
            IEdmModel model = request.ODataProperties().Model;

            if (model == null)
            {
                // user has not configured anything or has registered a model without the element type
                // let's create one just for this type and cache it in the action descriptor
                model = actionDescriptor.Properties.GetOrAdd("System.Web.OData.Model+" + elementClrType.FullName, _ =>
                {
                    ODataConventionModelBuilder builder =
                        new ODataConventionModelBuilder(actionDescriptor.Configuration, isQueryCompositionMode: true);
                    builder.EnableLowerCamelCase();
                    EntityTypeConfiguration entityTypeConfiguration = builder.AddEntityType(elementClrType);
                    builder.AddEntitySet(elementClrType.Name, entityTypeConfiguration);
                    IEdmModel edmModel = builder.GetEdmModel();
                    Contract.Assert(edmModel != null);
                    return edmModel;
                }) as IEdmModel;
            }

            Contract.Assert(model != null);
            return model;
        }
Esempio n. 6
0
            public static IEdmModel CreateModel()
            {
                var modelBuilder = new ODataConventionModelBuilder();

                modelBuilder.EnableLowerCamelCase();
                modelBuilder.Namespace     = ContainerNamespace;
                modelBuilder.ContainerName = "fileRepository";

                var fileType = modelBuilder.EntityType <File>();

                fileType.Name      = Camelize(fileType.Name);
                fileType.Namespace = TypeNamespace;

                var uploadSessionType = modelBuilder.EntityType <UploadSession>();

                uploadSessionType.Name      = Camelize(uploadSessionType.Name);
                uploadSessionType.Namespace = TypeNamespace;

                modelBuilder.EntitySet <File>("files");
                modelBuilder.EntitySet <UploadSession>("uploadSessions");

                var model = modelBuilder.GetEdmModel() as EdmModel;

                var edmFileType = model.FindDeclaredType(QualifiedTypeName(fileType.Name)) as EdmEntityType;

                SetPrivateFieldValue(edmFileType, "hasStream", true);

                model.SetDescriptionAnnotation(edmFileType, "Represents a file in the file repository.");

                return(model);
            }
Esempio n. 7
0
        public static void Register(HttpConfiguration config)
        {
            var modelBuilder = new ODataConventionModelBuilder(config);

            //modelBuilder.ResolverEdmModel();
            //modelBuilder.RegisterOdataEntities();
            modelBuilder.EnableLowerCamelCase();

            config.EnableCaseInsensitive(true);

            modelBuilder.EntitySet <Person>("People");


            modelBuilder.Namespace = "f";
            modelBuilder.EntityType <Person>()
            .Action("Acao")
            .Parameter <int>("Rating");


            modelBuilder.EntityType <Person>()
            .Function("Funcao")
            .Returns <double>()

            ;



            config.MapODataServiceRoute(
                ODataConstants.RouteName,
                ODataConstants.RoutePrefix,
                modelBuilder.GetEdmModel(),
                new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer)
                );
        }
Esempio n. 8
0
        public static void Register(HttpConfiguration config)
        {
            config.EnableCors();

            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
            builder.EntitySet<Exercise>("Exercises");
            builder.EntitySet<Workout>("Workouts");
            builder.EntitySet<WorkoutSession>("WorkoutSessions");
            builder.EntitySet<ExerciseSet>("ExerciseSets");
            builder.EnableLowerCamelCase();

            // Need this. Otherwise SingleResult<WorkoutSession> GetWorkoutSession tries to return null and then fails to serialize the null value.
            config.MapODataServiceRoute(
                "odata"
                , "odata"
                , builder.GetEdmModel()
                , defaultHandler: HttpClientFactory.CreatePipeline(
                    innerHandler: new HttpControllerDispatcher(config)
                    , handlers: new[] { new ODataNullValueMessageHandler() }));
        }
        public static IEdmModel GetConventionModel()
        {
            ODataConventionModelBuilder        builder   = new ODataConventionModelBuilder();
            EntitySetConfiguration <Employee>  employees = builder.EntitySet <Employee>("Employees");
            EntityTypeConfiguration <Employee> employee  = employees.EntityType;

            employee.EnumProperty <Gender>(e => e.Sex).Name = "Gender";

            employee.Collection.Function("GetEarliestTwoEmployees").ReturnsCollectionFromEntitySet <Employee>("Employees");

            var functionConfiguration = builder.Function("GetAddress");

            functionConfiguration.Parameter <int>("id");
            functionConfiguration.Returns <Address>();

            var actionConfiguration = builder.Action("SetAddress");

            actionConfiguration.Parameter <int>("id");
            actionConfiguration.Parameter <Address>("address");
            actionConfiguration.ReturnsFromEntitySet(employees);

            var resetDataSource = builder.Action("ResetDataSource");

            builder.Namespace = typeof(Employee).Namespace;
            builder.EnableLowerCamelCase();
            var edmModel = builder.GetEdmModel();

            return(edmModel);
        }
Esempio n. 10
0
        public IEdmModel GetEdmModel(System.IServiceProvider serviceProvider)
        {
            var builder = new ODataConventionModelBuilder(serviceProvider);

            //builder.EntitySet<Account>("Accounts");
            //builder.EntitySet<BusinessUnit>("BusinessUnits");
            builder.EntitySet <Contact>("Contacts");
            builder.EntitySet <Email>("Emails");
            builder.EntitySet <Content>("Contents");

/*
 *          builder.EntitySet<Contact>("Contacts")
 *                          .EntityType
 *                          .Filter() // Allow for the $filter Command
 *                          .Count() // Allow for the $count Command
 *                          .Expand() // Allow for the $expand Command
 *                          .OrderBy() // Allow for the $orderby Command
 *                          .Page() // Allow for the $top and $skip Commands
 *                          .Select() // Allow for the $select Command
 *                          .Expand();
 *
 *          builder.EntitySet<Email>("Emails")
 *                          .EntityType
 *                          .Filter() // Allow for the $filter Command
 *                          .Count() // Allow for the $count Command
 *                          .Expand() // Allow for the $expand Command
 *                          .OrderBy() // Allow for the $orderby Command
 *                          .Page() // Allow for the $top and $skip Commands
 *                          .Select() // Allow for the $select Command
 *                          .Expand();
 */

            builder.EnableLowerCamelCase();
            return(builder.GetEdmModel());
        }
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();
            // Web API configuration and services
            var builder = new ODataConventionModelBuilder();

            config.EnableUnqualifiedNameCall(true);

            config.EnableEnumPrefixFree(true);

            RegisterEntities(ref builder);

            RegisterCustomRoutes(ref builder);

            builder.Namespace = "";

            builder.EnableLowerCamelCase();

            ODataBatchHandler odataBatchHandler =
                new DefaultODataBatchHandler(new HttpServer(config));

            odataBatchHandler.MessageQuotas.MaxOperationsPerChangeset = 10;
            odataBatchHandler.MessageQuotas.MaxPartsPerBatch          = 10;

            config.MapODataServiceRoute("odata", "odata", builder.GetEdmModel(), odataBatchHandler);

            // Web API routes
        }
Esempio n. 12
0
        private IEdmModel GetEdmModel(IServiceProvider serviceProvider)
        {
            var builder = new ODataConventionModelBuilder(serviceProvider);

            builder.EnableLowerCamelCase();

            builder.EntitySet <DailyReadingDTO>("DailyReading")
            .EntityType
            .Filter(QueryOptionSetting.Allowed)
            .Count()
            .OrderBy()
            .Page()
            .Select();
            builder.EntityType <DailyReadingDTO>().Filter("type");

            builder.EntitySet <SaintDTO>("Saint")
            .EntityType
            .Filter(QueryOptionSetting.Allowed)
            .Count()
            .OrderBy()
            .Page()
            .Select();
            builder.EntityType <SaintDTO>().Filter("id");


            return(builder.GetEdmModel());
        }
    // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
    public void ConfigureWebApi(IAppBuilder app)
    {
      var config = new HttpConfiguration();

      // Web API routes
      config.MapHttpAttributeRoutes(); //NB Must come before OData route mapping
      config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional });

      // OData:  Create the OData model.  Here, we're using the convention model builder that will use OData
      // convention defaults for model creation and routing.
      ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
      
      // All entity properties should be in lower camel case
      builder.EnableLowerCamelCase();

      // Because PersonSearchHit inherits from SearchHit, we'll ignore it.
      // This gets around the convention builder's decision to create an entity out of the SearchHit object.
      builder.Ignore<PersonSearchHit>();

      // Create two entity sets:
      // One for search features and one that will retrieve a given person.
      builder.EntitySet<IndexSearch>("Search");
      builder.EntitySet<Person>("People");
      
      // OData model registration and route creation
      config.MapODataServiceRoute("ODataRoute", null, builder.GetEdmModel());

      // Set up the bearer token that will be required to do OData calls.
      WebApiConfigBearerToken.Configure(config);

      app.UseWebApi(config);
    }
Esempio n. 14
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseAuthentication();

            app.UseCors("AllowSpecificOrigin");

            var builder = new ODataConventionModelBuilder(app.ApplicationServices);

            builder.EntitySet <Author>(nameof(Author));
            builder.EntitySet <Book>(nameof(Book));
            builder.EnableLowerCamelCase();

            AutoMapper.Mapper.Initialize(cfg =>
            {
                cfg.CreateMap <Author, AuthorDto>()
                .ForMember(dest => dest.Name, opt => opt.MapFrom(src =>
                                                                 $"{src.FirstName} {src.LastName}"))
                .ForMember(dest => dest.Age, opt => opt.MapFrom(src =>
                                                                src.DateOfBirth.GetCurrentAge()));

                cfg.CreateMap <Book, BookDto>();
            });

            app.UseMvc(routeBuilder =>
            {
                routeBuilder.Count().Filter().OrderBy().Expand().Select().MaxTop(null);
                routeBuilder.MapODataServiceRoute("ODataRoute", "odata", builder.GetEdmModel());
                routeBuilder.EnableDependencyInjection();
            });
        }
Esempio n. 15
0
        public static void Register(HttpConfiguration config)
        {
            var cors = new EnableCorsAttribute(
                origins: "*",
                headers: "*",
                methods: "*");

            config.EnableCors(cors);
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

            config.Count().Filter().OrderBy().Expand().Select().MaxTop(null);
            builder.EnableLowerCamelCase();
            builder.EntitySet <Translation>("Translations");
            builder.EntitySet <Category>("Categories");
            builder.EntitySet <QuizQuestion>("QuizQuestions");
            builder.EntitySet <LearningType>("LearningTypes");
            config.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
        }
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            var builder = new ODataConventionModelBuilder(app.ApplicationServices);

            builder.EntitySet <Product>("Products");

            builder.EntitySet <Product>("products");
            //builder.EntitySet<ProductDetail>("Detail");
            builder.ComplexType <ProductCategory>();

            // Convert all query data to lower case
            builder.EnableLowerCamelCase(); // with this option, "Products({Id})/Detail" must change to "Products({Id})/detail"

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }


            //app.UseMvc();
            app.UseMvc(routeBuilder =>
            {
                // Enable query operators in the routing
                routeBuilder.Count().Filter().OrderBy().Expand().Select().MaxTop(null);
                // Odata Route: ~/odata/~
                routeBuilder.MapODataServiceRoute("OData", "odata", builder.GetEdmModel());
                // Workaround: https://github.com/OData/WebApi/issues/1175
                routeBuilder.EnableDependencyInjection();
            });
        }
Esempio n. 17
0
        protected override void Initialize(HttpConfiguration configuration)
        {
            var builder = new ODataConventionModelBuilder();

            builder.Namespace = "Test";
            builder.EnableLowerCamelCase();
            configuration.EnableCaseInsensitive(true);
            configuration.EnableMediaResources();

            var people = builder.EntitySet <Person>("People");
            var person = people.EntityType;

            person.Namespace = builder.Namespace;
            person.HasKey(p => p.Id);
            person.MediaType(p => p.PhotoImageType);
            person.Ignore(p => p.Flags);
            person.Ignore(p => p.Timestamp);
            person.Ignore(p => p.SeoTerms);
            person.Ignore(p => p.Links);
            person.Ignore(p => p.PhotoImage);
            person.Ignore(p => p.Birthday);
            person.Ignore(p => p.DisplayStyle);

            var model = builder.GetEdmModelWithAnnotations();

            configuration.MapODataServiceRoute("odata", "api", model);
        }
        public static IEdmModel GetConventionModel()
        {
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
            EntitySetConfiguration<Employee> employees = builder.EntitySet<Employee>("Employees");
            EntityTypeConfiguration<Employee> employee = employees.EntityType;
            employee.EnumProperty<Gender>(e => e.Sex).Name = "Gender";

            employee.Collection.Function("GetEarliestTwoEmployees").ReturnsCollectionFromEntitySet<Employee>("Employees");

            var functionConfiguration = builder.Function("GetAddress");
            functionConfiguration.Parameter<int>("id");
            functionConfiguration.Returns<Address>();

            var actionConfiguration = builder.Action("SetAddress");
            actionConfiguration.Parameter<int>("id");
            actionConfiguration.Parameter<Address>("address");
            actionConfiguration.ReturnsFromEntitySet(employees);

            var resetDataSource = builder.Action("ResetDataSource");

            builder.Namespace = typeof(Employee).Namespace;
            builder.EnableLowerCamelCase();
            var edmModel = builder.GetEdmModel();
            return edmModel;
        }
Esempio n. 19
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            var builder = new ODataConventionModelBuilder(app.ApplicationServices);

            builder.EntitySet <Company>("Companies");
            builder.EnableLowerCamelCase();
            var model = builder.GetEdmModel();

            app.UseMvc(routeBuilder =>
            {
                routeBuilder.Select().Expand().Filter().OrderBy().MaxTop(1).Count();
                routeBuilder.MapODataServiceRoute(routeName: "OData", routePrefix: "odata", model: model);

                routeBuilder.EnableDependencyInjection();

                routeBuilder.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");                 // enable mvc controllers
            });

            app.UseODataBatching();
        }
Esempio n. 20
0
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            var builder = new ODataConventionModelBuilder(app.ApplicationServices);

            builder.EntitySet <OrderDto>("Orders");
            builder.EnableLowerCamelCase();

            app.UseMvc(routeBuilder =>
            {
                routeBuilder.MapODataServiceRoute("ODataRoute", "odata", builder.GetEdmModel());

                //// Work-around for #1175
                routeBuilder.EnableDependencyInjection(containerBuilder =>
                                                       containerBuilder.AddService <ODataUriResolver>(
                                                           Microsoft.OData.ServiceLifetime.Singleton,
                                                           _ => app.ApplicationServices.GetRequiredService <ODataUriResolver>()));
            });

            Mapper.Initialize(cfg =>
                              cfg.CreateMap <BusinessOrder, OrderDto>()
                              .ForMember(o => o.Id, o => o.MapFrom(v => v.OrderId))
                              .ForMember(o => o.Name, o => o.MapFrom(v => v.OrderName))
                              .ForMember(o => o.Quantity, o => o.MapFrom(v => v.OrderQuantity))
                              .ForMember(o => o.DebugMessage, o => o.MapFrom(v => v.DebugMessage))
                              );

            Mapper.AssertConfigurationIsValid();
        }
Esempio n. 21
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
        {
            app.UseCors("AllowAll");
            var builder = new ODataConventionModelBuilder(serviceProvider);

            builder.EnableLowerCamelCase();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHangfireDashboard();
            app.UseHttpsRedirection();
            app.UseAuthentication();
            app.UseMvc(routeBuilder =>
            {
                routeBuilder.MapODataServiceRoute("ftapi", "ftapi", builder.AddEntitySet());
                routeBuilder.Count().Filter().OrderBy().Expand().Select().MaxTop(null);
                routeBuilder.EnableDependencyInjection();
                routeBuilder.MapRoute(
                    name: "DefaultApi", template: "api/{controller}/{id?}"
                    );
            });
        }
Esempio n. 22
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseSpaStaticFiles();
            app.UseODataBatching();

            //app.UseCors("CorsPolicy");
            app.UseCors("AllowAllOrigins");
            //app.UseSignalR(routes =>
            //{
            //    routes.MapHub<NotifyHub>("notify");
            //});

            app.UseSignalR(route =>
            {
                route.MapHub <ChatHub>("/chathub");
                route.MapHub <StockTickerHub>("/stock");
                route.MapHub <DynamicChatHub>("/dynamichub");
            });

            app.UseMvc(routes =>
            {
                var builder = new ODataConventionModelBuilder();
                builder.EntitySet <WeatherForecast>("SampleData");
                builder.EnableLowerCamelCase();

                routes.Select().Expand().Filter().OrderBy().MaxTop(100).Count();
                routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel(), new DefaultODataBatchHandler());

                routes.MapRoute(
                    name: "default",
                    template: "{controller}/{action=Index}/{id?}");
            });

            app.UseSpa(spa =>
            {
                // To learn more about options for serving an Angular SPA from ASP.NET Core,
                // see https://go.microsoft.com/fwlink/?linkid=864501

                spa.Options.SourcePath = "ClientApp";

                if (env.IsDevelopment())
                {
                    spa.UseAngularCliServer(npmScript: "start");
                }
            });
        }
Esempio n. 23
0
        private static IEdmModel GetEdmModel()
        {
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

            builder.EnableLowerCamelCase();
            builder.EntitySet <Dto.Item>("Items").EntityType.Page(500, 50);
            return(builder.GetEdmModel());
        }
Esempio n. 24
0
		private static IEdmModel GenerateEdmModel()
		{
			var builder = new ODataConventionModelBuilder();
			builder.EnableLowerCamelCase();
			builder.EntitySet<TranslatedVideo>("Videos");

			return builder.GetEdmModel();
		}
Esempio n. 25
0
        private static IEdmModel GetEdmModel()
        {
            var builder = new ODataConventionModelBuilder();

            builder.EntitySet <TestEntity>("TestEntities");
            builder.EnableLowerCamelCase();
            return(builder.GetEdmModel());
        }
Esempio n. 26
0
        public static IEdmModel GetEdmModel()
        {
            var builder = new ODataConventionModelBuilder();

            builder.EntitySet <WeatherForecastVm>("WeatherForecast");
            builder.EnableLowerCamelCase();
            return(builder.GetEdmModel());
        }
Esempio n. 27
0
        public static IEdmModel ODataEntityModelFactory(Action <ODataConventionModelBuilder> action)
        {
            var builder = new ODataConventionModelBuilder();

            action(builder);
            return(builder
                   .EnableLowerCamelCase()
                   .GetEdmModel());
        }
    public static IEdmModel GetModel()
    {
        var builder = new ODataConventionModelBuilder();

        builder.EnableLowerCamelCase();
        var setOrders = builder.EntitySet <SchoolModel>("Schools").EntityType.HasKey(x => new { x.SchoolId });

        return(builder.GetEdmModel());
    }
Esempio n. 29
0
        private static IEdmModel GetEdmModel()
        {
            var builder = new ODataConventionModelBuilder();

            builder.EnableLowerCamelCase();
            builder.EntitySet <Partition>("Partition");
            builder.EntitySet <Message>("Message");
            builder.EntitySet <AppHistory>("AppHistory");
            return(builder.GetEdmModel());
        }
Esempio n. 30
0
        private static void ConfigureOData(HttpConfiguration config)
        {
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

            builder.EnableLowerCamelCase();

            builder.EntitySet <Models.Customer>("Customers");

            config.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
        }
Esempio n. 31
0
        public IEdmModel GetEdmModel(IServiceProvider serviceProvider)
        {
            var builder = new ODataConventionModelBuilder(serviceProvider);

            builder.EnableLowerCamelCase();

            builder.EntitySet <BudgetOdataViewModel>("Budgets");

            return(builder.GetEdmModel());
        }
Esempio n. 32
0
 public ODataApiBuilder(IServiceCollection services, bool enableLowerCamelCase)
 {
     Services      = services;
     _modelBuilder = new ODataConventionModelBuilder();
     if (enableLowerCamelCase)
     {
         _modelBuilder.EnableLowerCamelCase();
     }
     _metadata = new List <EntityMetadata>();
 }
Esempio n. 33
0
        private static IEdmModel GetEdmModel()
        {
            var odataBuilder = new ODataConventionModelBuilder();

            odataBuilder.EnableLowerCamelCase();
            //odataBuilder.EntitySet<ProjectTracker>("ProjectTracker");
            //odataBuilder.EntitySet<Machine>("Machines");
            //odataBuilder.EntitySet<Line>("Lines");
            return(odataBuilder.GetEdmModel());
        }
Esempio n. 34
0
        private static IEdmModel GetCustomRouteModel()
        {
            var builder = new ODataConventionModelBuilder();
            builder.EnableLowerCamelCase();

            builder.EntitySet<Customer>("Customers");
            builder.EntitySet<Order>("Orders");

            return builder.GetEdmModel();
        }
Esempio n. 35
0
        private static IEdmModel GetEdmModel()
        {
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

            builder.EnableLowerCamelCase();                    // WTF

            builder.EntitySet <AuthorApiViewModel>("Authors"); // CAMELCASE!
            builder.EntitySet <BookApiViewModel>("Books");     // CAMELCASE!
            return(builder.GetEdmModel());
        }
Esempio n. 36
0
        private static IEdmModel GetProductWithEnumKeyModel()
        {
            var builder = new ODataConventionModelBuilder();

            builder.EnableLowerCamelCase();

            builder.EntitySet <ProductWithEnumKey>("ProductWithEnumKeysTest");

            return(builder.GetEdmModel());
        }
Esempio n. 37
0
        private static IEdmModel GetVersionedModel()
        {
            var builder = new ODataConventionModelBuilder();

            builder.EnableLowerCamelCase();

            builder.EntitySet <Customer>("Customers");

            return(builder.GetEdmModel());
        }
Esempio n. 38
0
        private static IEdmModel GetEdmModel()
        {
            var builder = new ODataConventionModelBuilder();
            builder.EntitySet<ProjectSimpleResponseModel, SearchController>();
            builder.EntityType<ProjectSimpleResponseModel>().Property(x => x.ShortDate);
            builder.EntityType<ProjectSimpleResponseModel>().Property(x => x.TitleUrl);

            builder.Namespace = typeof(ProjectSimpleResponseModel).Namespace;
            builder.EnableLowerCamelCase();
            return builder.GetEdmModel();
        }
        private static IEdmModel GetEdmModel()
        {
            var builder = new ODataConventionModelBuilder();

            builder.EntitySet<Brand>("Brands");

            builder.EnableLowerCamelCase(NameResolverOptions.ProcessReflectedPropertyNames | NameResolverOptions.ProcessExplicitPropertyNames);

            builder.EntityType<Brand>().Ignore(brand => brand.Name);

            return builder.GetEdmModel();
        }
Esempio n. 40
0
 private static IEdmModel GetEdmModel()
 {
     var builder = new ODataConventionModelBuilder {Namespace = typeof (Log).Namespace};
     builder.EntitySet<Log>("logs");
     builder.EntitySet<Logs_Full.Result>("logs_full");
     builder.EntitySet<Application>("applications");
     builder.EntitySet<Environment>("environments");
     builder.EntitySet<DataSource>("dataSources");
     builder.EnableLowerCamelCase();
     var edmModel = builder.GetEdmModel();
     return edmModel;
 }
		private static IEdmModel GenerateEdmModel()
		{
			
			var builder = new ODataConventionModelBuilder();
			builder.EnableLowerCamelCase();
			builder.EntitySet<TranslatedComment>("Comments");
			builder.EntitySet<TranslatedAbuse>("Abuses");
			// TOOD: check why when I added lines below - author is no longer navigation property and I don't have to use: $expand=author
			builder.Namespace = "Actions";
			builder.EntityType<TranslatedComment>().Action("VoteUp").Parameter<VoteUp>("vote");
			builder.EntityType<TranslatedComment>().Action("VoteDown").Parameter<VoteDown>("vote");
			builder.EntityType<TranslatedComment>().Action("ReportAbuse").Parameter<Report>("report");

			return builder.GetEdmModel();
		}
		private static IEdmModel GenerateEdmModel()
		{
			var builder = new ODataConventionModelBuilder();
			builder.EnableLowerCamelCase();
			builder.EntitySet<Suggestion>("Suggestions");
			builder.EntitySet<VoteUp>("VotesUp");
			builder.EntitySet<VoteDown>("VotesDown");
			builder.EntitySet<View>("Views");
			builder.Namespace = "Actions";
			builder.EntityType<Suggestion>().Action("VoteUp").Parameter<VoteUp>("vote");
			builder.EntityType<Suggestion>().Action("VoteDown").Parameter<VoteDown>("vote");
			builder.EntityType<Suggestion>().Action("CountView").Parameter<View>("view");

			return builder.GetEdmModel();
		}
Esempio n. 43
0
        public static IEdmModel GetModel()
        {
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
            EntitySetConfiguration<Employee> employees = builder.EntitySet<Employee>("Employees");
            EntityTypeConfiguration<Employee> employee = employees.EntityType;
            employee.EnumProperty<Gender>(e => e.Sex).Name = "Gender";

            var resetDataSource = builder.Action("ResetDataSource");

            builder.Namespace = typeof(Employee).Namespace;

            // All the property names in the generated Edm Model will become camel case if EnableLowerCamelCase() is called.
            builder.EnableLowerCamelCase();
            var edmModel = builder.GetEdmModel();
            return edmModel;
        }
		public static void Register( HttpConfiguration config )
		{
			// Web API configuration and services
			// Configure Web API to use only bearer token authentication.
			config.SuppressDefaultHostAuthentication();
			config.Filters.Add( new HostAuthenticationFilter( OAuthDefaults.AuthenticationType ) );

			config.MapHttpAttributeRoutes();

			ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
			builder.EnableLowerCamelCase();
			builder.EntitySet<Session>( "Sessions" );
			var userEntityType = builder.EntitySet<Account>( "Users" ).EntityType;
			userEntityType.Ignore( e => e.Claims );
			userEntityType.Ignore( e => e.Logins );
			userEntityType.Ignore( u => u.Password );

			builder.EntitySet<Profile>( "Profiles" );

			config.MapODataServiceRoute(
				"odata",
				"odata",
				builder.GetEdmModel(),
				new ODataNullValueMessageHandler()
				{
					InnerHandler = new HttpControllerDispatcher( config )
				} );

			// Web API routes


			config.Routes.MapHttpRoute(
				name: "DefaultApi",
				routeTemplate: "api/{controller}/{id}",
				defaults: new { id = RouteParameter.Optional }
			);
		}
Esempio n. 45
0
        private static IEdmModel GetFunctionsEdmModel()
        {
            var builder = new ODataConventionModelBuilder();
            builder.EnableLowerCamelCase();

            builder.EntitySet<Product>("Products");

            var productType = builder.EntityType<Product>();

            // Function bound to a collection that accepts an enum parameter
            var enumParamFunction = productType.Collection.Function("GetByEnumValue");
            enumParamFunction.Parameter<MyEnum>("EnumValue");
            enumParamFunction.ReturnsCollectionFromEntitySet<Product>("Products");

            // Function bound to an entity set
            // Returns the most expensive product, a single entity
            productType.Collection
                .Function("MostExpensive")
                .Returns<double>();

            // Function bound to an entity set
            // Returns the top 10 product, a collection
            productType.Collection
                .Function("Top10")
                .ReturnsCollectionFromEntitySet<Product>("Products");

            // Function bound to a single entity
            // Returns the instance's price rank among all products
            productType
                .Function("GetPriceRank")
                .Returns<int>();

            // Function bound to a single entity
            // Accept a string as parameter and return a double
            // This function calculate the general sales tax base on the 
            // state
            productType
                .Function("CalculateGeneralSalesTax")
                .Returns<double>()
                .Parameter<string>("state");

            // Function bound to an entity set
            // Accepts an array as a parameter
            productType.Collection
                .Function("ProductsWithIds")
                .ReturnsCollectionFromEntitySet<Product>("Products")
                .CollectionParameter<int>("Ids");

            // An action bound to an entity set
            // Accepts multiple action parameters
            var createAction = productType.Collection.Action("Create");
                createAction.ReturnsFromEntitySet<Product>("Products");
                createAction.Parameter<string>("Name").OptionalParameter = false;
                createAction.Parameter<double>("Price").OptionalParameter = false;
                createAction.Parameter<MyEnum>("EnumValue").OptionalParameter = false;

            // An action bound to an entity set
            // Accepts an array of complex types
            var postArrayAction = productType.Collection.Action("PostArray");
            postArrayAction.ReturnsFromEntitySet<Product>("Products");
            postArrayAction.CollectionParameter<ProductDto>("products").OptionalParameter = false;

            // An action bound to an entity
            productType.Action("Rate")
                .Parameter<int>("Rating");

            return builder.GetEdmModel();
        }
Esempio n. 46
0
        private static IEdmModel GetProductWithCompositeEnumIntKeyModel()
        {
            var builder = new ODataConventionModelBuilder();
            builder.EnableLowerCamelCase();

            builder.EntitySet<ProductWithCompositeEnumIntKey>
                            ("ProductWithCompositeEnumIntKeys");

            return builder.GetEdmModel();
        }