【问题标题】:OData cannot provide records count in ASP.NET Core APIOData 无法在 ASP.NET Core API 中提供记录计数
【发布时间】:2023-02-15 14:22:26
【问题描述】:

我正在使用 ASP.NET Core Web API 和 EF Core(代码优先)与数据库通信。我使用以下代码:

控制器:

public class EquipmentController : ODataController
{
    [HttpGet]
    [EnableQuery]
    public ActionResult<IQueryable<Equipment>> GetAllEquipmentsList()
    {
        IQueryable<Equipment> list = _sqlServerContext.Equipments
            .Include(x => x.CostCenter)
            .Include(x => x.EquipmentCategory)
            .Include(x => x.equipmentType)
            .AsQueryable();

        return Ok(list);
    }
}

Program.cs:

builder.Services
       .AddControllers()
       .AddOData(options => options.Select().Filter().OrderBy().Count().Expand().SetMaxTop(null));

我安装了以下版本的 OData:

当我使用

http://localhost:5000/api/Equipment/GetAllEquipmentsList?$count=true

获取了 JSON 数据,但没有计数信息。

我该如何解决?

【问题讨论】:

    标签: c# asp.net-core asp.net-core-webapi


    【解决方案1】:

    我通过将以下代码添加到Program.cs 解决了这个问题:

    static IEdmModel GetEdmModel()
    {
        ODataConventionModelBuilder builder = new();
        builder.EntitySet<Equipment>("Equipments");
        return builder.GetEdmModel();
    }
    builder.Services.AddControllers().AddOData(opt => opt.AddRouteComponents("odata", GetEdmModel()).Select().Filter().OrderBy().Count().Expand().SetMaxTop(null));
    

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 1970-01-01
      • 2019-10-15
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多