Automapper:“缺少类型映射配置或不支持的映射。”

问题描述 投票:0回答:1

我有一个用户和一个UserListDto。我正在尝试将我的用户映射到UserListDto。但是,我得到了“缺少类型映射配置或不支持的映射”。这样做时。

当我调用GetUsers()而不是GetUser(int id)时有效

UsersController:

    [HttpGet]
    public async Task<IActionResult> GetUsers()
    {
        var users = await _repo.GetUsers();

        var usersToReturn = _mapper.Map<IEnumerable<UserForListDto>>(users);

        return Ok(usersToReturn);
    }

    [HttpGet("{id}", Name = "GetUser")]
    public IActionResult GetUser(int id)
    {
        var user = _repo.GetUser(id, false);

        var userToReturn = _mapper.Map<UserForListDto>(user);

        return Ok(userToReturn);
    }

AutoMapperProfiles:

public class AutoMapperProfiles : Profile
{
    public AutoMapperProfiles()
    {
        CreateMap<User, UserForListDto>();
        CreateMap<User, UserForDetailedDto>();
        CreateMap<UserForRegisterDto, User>();
        CreateMap<HighScoreDto, HighScore>()
        .ForMember(h=>h.TimeBetweenClicksAverage, 
        m=>m.MapFrom(u=>u.TimeBetweenClicksArray.Average()));
        CreateMap<HighScore,HighScoreForReturnDto>();



    }
}

用户:

public class User : IdentityUser<int>
{
    public virtual ICollection<UserRole> UserRoles { get; set; }
    public virtual ICollection<HighScore> HighScores { get; set; }
}

UserForDetailedDto:

public class UserForDetailedDto
{
    public int Id { get; set; }
    public string Username { get; set; }
}
asp.net-core .net-core automapper
1个回答
0
投票

似乎您可能正在尝试将单个User对象映射到IEnumerable集合。在您的GetUser(int id)方法中,尝试通过以下方式将其映射到单个UserForListDto对象:

_mapper.Map<UserForListDto>(user)

© www.soinside.com 2019 - 2024. All rights reserved.