如何将多个实体映射到Mapster中的一个类

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

在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() 方法中没有参数。 谁能帮我看看我应该做什么?谢谢。

automapper mapster
1个回答
0
投票

如果我正确理解你的问题,那么你正在尝试从多个源映射对象。 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);

希望,有帮助!

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