标题可能有点偏离,但我对如何提出我的问题没有更好的想法。
我有一个用户,该用户属于一个类别,但我想在返回所有用户 dto 时映射类别名称,而不是用于跟踪该用户所属类别的categoryId。
// Entities
public partial class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNr { get; set; }
public int CategoryId { get; set; }
// Navigation Properties
public virtual Category Category { get; set; }
}
public partial class Category
{
public int Id { get; set; }
public string CategoryName { get; set; }
// Navigation Properties
public virtual ICollection<User> User { get; set; }
}
// DTOs
public class UserDto : IMapFrom<User>
{
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNr { get; set; }
public int CategoryId { get; set; } // --> Want to map CategoryName instead
}
// Get all Users
public async Task<IEnumerable<UserDto>> Handle(GetAllUsersQuery request, CancellationToken cancellationToken)
{
var data = await _context.Users
.ProjectTo<UserDto>(_mapper.ConfigurationProvider)
.ToListAsync(cancellationToken);
return data;
}
您应该配置 Automapper 来检索类别名称
CreateMap<User, UserDto>() .ForMember(dest => dest.CategoryName, opt => opt.MapFrom(src => src.Category.CategoryName));
因此,当完成从用户到用户 dto 的映射时,将检索类别名称而不是 id。