在AutoMapper中,我们可以将多个实体映射到一个实体,但不能在mapster中实现。 自动映射器演示代码:
实体:
var users = await _userManager.Users
.AsNoTracking()
.ProjectTo<UserDto>(new { roles = _roleManager.Roles })
.ToListAsync();
自动映射器配置:
IQueryable<IdentityRole> roles = null;
CreateMap<User, UserDto>()
.ForMember(x => x.Roles, opt =>
opt.MapFrom(src =>
src.Roles
.Join(roles, a => a.RoleId, b => b.Id, (a, b) => b.Name)
.ToList()
)
);
Mapster Querable.ProjectTo() 方法中没有参数。 谁能帮我看看我应该做什么?谢谢。
如果我正确理解你的问题,那么你正在尝试从多个源映射对象。 Mapster支持此操作。来自 Mapster GitHub 存储库:
public class SubDto
{
public string Extra { get; set; }
}
public class Dto
{
public string Name { get; set; }
public SubDto SubDto { get; set; }
}
public class Poco
{
public string Name { get; set; }
public string Extra { get; set; }
}
如果要将
SubDto
和 Dto
映射到 Poco
,可以使用以下配置:
TypeAdapterConfig<(SubDto, Dto), Poco>.NewConfig()
.Map(dest => dest, src => src.Item1)
.Map(dest => dest, src => src.Item2);
希望,有帮助!