我有一个用户和一个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; }
}
似乎您可能正在尝试将单个User对象映射到IEnumerable集合。在您的GetUser(int id)方法中,尝试通过以下方式将其映射到单个UserForListDto对象:
_mapper.Map<UserForListDto>(user)