gpt4 book ai didi

asp.net-core - 如何实现最小 Controller

转载 作者:行者123 更新时间:2023-12-02 14:29:15 28 4
gpt4 key购买 nike

我有一个 ASP.NET Core 1.1 Web 项目。

我已经安装了Microsoft.OData.Core并遵循 http://odata.github.io/ 下链接的“入门” .

该页面上的以下两个链接均适用于 .Net 45

本月旧SO answer链接到 Microsoft.AspNetCore.OData它不属于 Microsoft,上次更新是在一年多前。

这个SO answer暗示“ASP.net core 中的 OData 支持”

我看到这个第三方解决方案 AutoODataEF.Core但是自动生成 Controller 。

最后,我看到了这个git issue表示适用于 ASP.Net Core 的 OData WebAPI 即将推出,但目前最终不可用。

假设我有一个 Person 模型和一个 EF DbContext。

如何实现最小的 OData Controller ?

最佳答案

asp.net core netcoreapp2.0 上的 odata,20180216

  1. 安装包 Microsoft.AspNetCore.OData -Pre {7.0.0-beta1}

  2. 在 Startup.cs 中:

    public virtual void ConfigureServices(IServiceCollection services)
    {
    // ...
    services.AddMvc(); // mvc first
    services.AddOData(); // odata second
    }

    public virtual void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
    // ...
    var builder = new ODataConventionModelBuilder(serviceProvider);
    builder.EntitySet<SomeClass>(nameof(SomeClass).ToLower()).EntityType.HasKey(s => s.SomeId);
    builder.EntitySet<OtherClass>(nameof(OtherClass).ToLower()).EntityType.HasKey(s => s.OtherId).MediaType(); // etc
    var model = builder.GetEdmModel();

    app.UseMvc(routeBuilder =>
    {
    routeBuilder.Select().Expand().Filter().OrderBy().MaxTop(null).Count();
    routeBuilder.MapODataServiceRoute("ODataRoute", "data", model); // e.g. http://localhost:port/data/someclass?...
    // insert special bits for e.g. custom MLE here
    routeBuilder.EnableDependencyInjection();
    routeBuilder.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}"); // enable mvc controllers
    });
    }
  3. 在 SomeClassController.cs 中:

    public class SomeClassController : ODataController // or just plain Controller
    {
    [EnableQuery]
    [HttpGet]
    [ODataRoute("someclass")]
    public List<SomeClass> Get() // this should maybe be an IQueryable wrapped by an IActionResult/OkObjectResult
    {
    List<SomeClass> list = new List<SomeClass>();
    // however you do this
    return list;
    }
    }

关于asp.net-core - 如何实现最小 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46242175/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com