AutoMapper 将两个模型映射到一个视图模型

我有两个模型和一个视图模型。

型号:

public User
{
    public string username {  get; set; }
    public int RoleId {  get; set; }
}

public Role
{
    public int RoleId {  get; set; }
    public string Name {  get; set; }
}

视图模型:

public UserIndex
{
    public string username {  get; set; }
    public string RoleName {  get; set; }
}

我尝试添加配置:

public class Role_User_UserIndex : Profile
{
    public Role_User_UserIndex()
    {
        CreateMap<User,UserIndex>();
        CreateMap<Role,UserIndex>()
            .ForMember(des => des.RoleName,opt => opt.MapFrom(src => src.Name));
        CreateMap<UserIndex,opt => opt.MapFrom(src => src.RoleName))
            .ForAllMembers(o => o.Condition((source,destination,member) => member != null));
    }
}

和控制器:

        var mapper = new MapperConfiguration(cfg =>cfg.AddProfile<AutoMapperConfig.Role_User_UserIndex>()).CreateMapper();
        var roles = db.Roles;
        var users = db.Users;
         
        var viewMode1 = mapper.Map<List<UserIndex>>(users);
        var viewMode2 = mapper.Map<List<UserIndex>>(roles);
        var indexViewModel= mapper.Map(viewModel,viewMode2);

viewMode1 有 10 个用户,viewMode2 有 3 个角色。

但是合并结果indexViewModel有10行数据,但是RoleName为null。

如果我用 viewMode2 交换 viewModel,indexViewModel 有 3 行数据,username 为空。

我也尝试删除“.ForAllMembers(o => o.Condition((source,member) => member != null));” ,但仍然无法正常工作。

如何将 RoleName 映射到 indexViewModel

我的 AutoMapper 版本是 9.0.0

谢谢!

speedstar119 回答:AutoMapper 将两个模型映射到一个视图模型

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1080796.html

大家都在问