【问题标题】:How to enable count in OData and .NET Core 3.0 on ASP .NET Application?如何在 ASP .NET 应用程序上启用 OData 和 .NET Core 3.0 中的计数?
【发布时间】:2020-05-20 06:57:27
【问题描述】:

当我提出请求时: http://localhost:5000/api/v1/users?$count=true

它返回对象及其属性的值,但不返回用户数:

这是我在控制器中的操作:

   /// <summary>
    /// Gets the list of all available users in the system
    /// </summary>
    /// <returns></returns>
    [HttpGet]
    [EnableQuery]
    public IEnumerable<UserDto> Get()
    {
        var users = dbContext.Users.ToList();

        return users.Select(u =>
        {
            var dto = mapper.Map<UserDto>(u);
            var claims = dbContext.UserClaims.Where(c => c.UserId == u.Id);
            dto.FirstName = claims.FirstOrDefault(c => c.ClaimType == JwtClaimTypes.GivenName)?.ClaimValue;
            dto.FamilyName = claims.FirstOrDefault(c => c.ClaimType == JwtClaimTypes.FamilyName)?.ClaimValue;
            return dto;
        }).ToList();
    }

这是我的启动配置:

services.AddOData();

app.UseMvc(router =>
        {
            router.EnableDependencyInjection();
            router.Select().Expand().Filter().OrderBy().MaxTop(100).Count().EnableContinueOnErrorHeader();
            router.MapODataServiceRoute("odata", "odata", GetEdmModel());
        });

    IEdmModel GetEdmModel()
    {
        var odataBuilder = new ODataConventionModelBuilder();
        odataBuilder.EntitySet<IntentUser>("Users");
        return odataBuilder.GetEdmModel();
    }

【问题讨论】:

    标签: c# count odata


    【解决方案1】:

    自从我更新到 OData 7.3.0(和 .Net Core 3.1)后,我遇到了同样的问题。

    如果您在控制器类中使用 [Route(...)] 和 [ApiController],可能就是问题所在。 Vanish Route 属性和 ApiController 属性: https://stackoverflow.com/a/58849806/12858107

    【讨论】:

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