// 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) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } // configure OData model var builder = new Microsoft.AspNet.OData.Builder.ODataConventionModelBuilder(serviceProvider); builder.EntitySet <Media>("Media").EntityType .OrderBy( nameof(Media.MediaId), nameof(Media.primaryTitle)) .Filter( nameof(Media.MediaId)); builder.EntitySet <Staff>("Staff").EntityType .OrderBy( nameof(Staff.StaffId), nameof(Staff.PrimaryName)) .Filter( nameof(Staff.StaffId)); app.UseMvc(routeBuilder => { routeBuilder.Count().Filter().OrderBy().Expand().Select().MaxTop(null); routeBuilder.MapODataServiceRoute("odata", "odata", builder.GetEdmModel()); }); }
public static void Register(HttpConfiguration config) { ODataV4.Builder.ODataModelBuilder builder = new ODataV4.Builder.ODataConventionModelBuilder(); ODataRegistrations.Register(builder); config.Count().Filter().OrderBy().Expand().Select().MaxTop(null); ODataV4.Extensions.HttpConfigurationExtensions.MapODataServiceRoute( configuration: config, routeName: "ODataRoute", routePrefix: "odata", model: builder.GetEdmModel()); //config.EnableQuerySupport(); }
public static IApplicationBuilder UseHcsPlatform(this IApplicationBuilder app) { DbInit(app); app.Use(Middlewares.AngularRouteCheckMiddleware); app.UseStaticFiles(); app.Use(Middlewares.PlatformControllerMiddleware); app.UseAuthentication(); var edmBuilder = new Microsoft.AspNet.OData.Builder.ODataConventionModelBuilder(); using (var ctx = app.ApplicationServices.CreateScope().ServiceProvider.GetRequiredService <PlatformDbContext>()) { foreach (var t in QueryApiEntities.Types.Distinct()) { var properties = t.GetProperties(); if (properties.Any(p => p.Name == "Id" || p.Name == t.Name + "Id" || p.GetCustomAttribute <System.ComponentModel.DataAnnotations.KeyAttribute>() != null)) { var entityTypeConfiguration = edmBuilder.AddEntityType(t); if (!entityTypeConfiguration.Keys.Any()) { var entityType = ctx.Model.FindEntityType(t); if (entityType != null) { foreach (var k in entityType.GetKeys()) { foreach (var p in k.Properties) { entityTypeConfiguration.HasKey(p.PropertyInfo); } } } else { var keyp = properties.FirstOrDefault(x => x.GetCustomAttribute <System.ComponentModel.DataAnnotations.KeyAttribute>() != null); if (keyp != null) { entityTypeConfiguration.HasKey(keyp); } else { keyp = properties.FirstOrDefault(p => p.Name == "Id"); if (keyp != null) { entityTypeConfiguration.HasKey(keyp); } else { keyp = properties.FirstOrDefault(p => p.Name == t.Name + "Id"); if (keyp != null) { entityTypeConfiguration.HasKey(keyp); } } } } } edmBuilder.AddEntitySet(t.Name, entityTypeConfiguration); } } var emdModel = edmBuilder.GetEdmModel(); app.UseMvc(b => { b.SetTimeZoneInfo(TimeZoneInfo.Utc); b.EnableDependencyInjection(opt => { opt.AddService(Microsoft.OData.ServiceLifetime.Singleton, typeof(OData.UriParser.ODataUriResolver), sp => new OData.UriParser.StringAsEnumResolver()); opt.AddService(Microsoft.OData.ServiceLifetime.Singleton, typeof(OData.Edm.IEdmModel), sp => emdModel); }); }); } return(app); }