我有两个模型和一个视图模型。
型号:
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
。
谢谢!