Возвращение модели представления .NET Core API - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь выполнить запрос, который возвращает только выбранные поля моей модели и связанных объектов.Я получаю сообщение об ошибке:

    Severity    Code    Description Project File    Line    Suppression State
    Error   CS0029  Cannot implicitly convert type
 'System.Collections.Generic.List<<anonymous type: int TeamId, string Name>>' to 'Microsoft.AspNetCore.Mvc.ActionResult<System.Collections.Generic.IEnumerable<ApplicationCore.Entities.TeamViewModel>>'    AppName C:....\Controllers\TeamController.cs    64  Active

Что я делаю не так?

  [HttpGet("{id}")]
    public async Task<ActionResult<IEnumerable<TeamViewModel>>> List(int id)
    {
        var team = await _context.Teams
            .Where(c => c.TeamId == id)
            .Select(c => new
            {
                c.TeamId,
                c.Team.Name
            })
            .ToListAsync();

        if (team == null)
        {
            return NotFound();
        }

        return team;
    }


class TeamViewModel
{
    [Required]
    public int TeamId { get; set; }
    [Required]
    public string TeamName { get; set; }
}

1 Ответ

0 голосов
/ 22 января 2019

Вы выбираете анонимный тип и пытаетесь вернуть его как конкретный TeamViewModel тип.

Предполагая, что TeamViewModel был предполагаемым типом, и что он определен с помощью свойств, использованных в исходном вопросе, действие должно быть реорганизовано.

[HttpGet("{id:int}")]
public async Task<ActionResult<IEnumerable<TeamViewModel>>> List(int id) {
    var team = await _context.Teams
        .Where(c => c.TeamId == id)
        .Select(c => new TeamViewModel { //<--
            TeamId = c.TeamId,
            TeamName = c.Team.Name
        })
        .ToListAsync();

    if (team.Count == 0) {
        return NotFound();
    }

    return team;
}

Обратите внимание, что ваш запрос не вернет null , поэтому нет необходимости проверять это.

Если список пуст, то это должно указывать на отсутствие записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...