我有两个模型和一个视图模型。
模型:
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, UserIndex>()
.ForMember(des => des.RoleName, 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 为空。
如果我将 viewModel 与 viewMode2 交换,则 indexViewModel 有 3 行数据并且 UserName 为空。
我还尝试删除“.ForAllMembers(o => o.Condition((source, destination, member) => member != null));” ,但仍然无法正常工作。
我怎样才能映射RoleName到indexViewModel?
我的 AutoMapper 版本是9.0.0.
谢谢!