Пример #1
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)
        {
            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());
            });
        }
Пример #2
0
        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);
        }