Как включить подсчет в OData и. NET Core 3.0 в ASP. NET приложении? - PullRequest
1 голос
/ 04 февраля 2020

Когда я делаю запрос: http://localhost: 5000 / api / v1 / users ? $ Count = true

Возвращает объект и значения его свойств, но делает не вернуть количество пользователей:

enter image description here

Это моё действие в контроллере:

   /// <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();
    }

1 Ответ

1 голос
/ 07 февраля 2020

Поскольку я обновил OData 7.3.0 (и. Net Core 3.1), у меня возникла та же проблема.

Если вы используете [Route (...)] и [ApiController] на класс контроллера, может быть в этом проблема. Vani sh Атрибут маршрута и атрибут ApiController: { ссылка }

...