我有一个User
和一个UserListDto
。我正在尝试将User
映射到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; }
}
答案 0 :(得分:1)
似乎有两个问题:1)您没有await
拨打_repo.GetUser
的电话,而2)您试图将单个User
映射到{ {1}}。
确保先IEnumerable<UserForListDto>
,然后再await _repo.GetUser
由于您不等待回购调用,因此它将尝试将类型_mapper.Map<UserForListDto>(user)
映射到Task
,这不是已配置的映射。
答案 1 :(得分:0)
您似乎正在尝试将单个User对象映射到IEnumerable集合。在您的GetUser(int id)方法中,尝试通过以下方式将其映射到单个UserForListDto对象:
_mapper.Map<UserForListDto>(user)