微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。