/// <summary> /// Dynamically create <see cref="EntitySetConfiguration{TEntityType}"/> for each Dto in Core.ApplicationModels.Dtos, add it to the odata configuration and enable default operations on routes. /// the default operations enabled are: Select, Expand, Filter, OrderBy, MaxTop, Count /// </summary> /// <param name="app"></param> public static void ConfigureOdata(this IApplicationBuilder app) { var odataBuilder = new ODataConventionModelBuilder(app.ApplicationServices); var dtoTypes = GetEntitiesDtos().Where(t => !t.Name.Contains("Item")); odataBuilder.AddTypesToOdataEntitySet(dtoTypes.ToArray()); app.UseMvc(routeBuilder => { routeBuilder.Select() .Expand() .Filter() .OrderBy() .MaxTop(100) .Count(); routeBuilder.MapODataServiceRoute("ODataRoute", "api", odataBuilder.GetEdmModel()); routeBuilder.EnableDependencyInjection(); }); }