如何解决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 举报,一经查实,本站将立刻删除。