0

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

模型:

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));” ,但仍然无法正常工作。

我怎样才能映射RoleNameindexViewModel

我的 AutoMapper 版本是9.0.0.

谢谢!

4

0 回答 0