2016-12-14 105 views
0

我正在使用具有用户详细信息的分页列表。所有细节都来自User表,除了我从UserRole表中获取ID的角色,我使用它来从角色表中获取角色。一个用户有多个角色的机会。所以基本上,UserRole表具有UserID和RoleID作为连接用户和角色表的外键。映射到多个外键的自动映射器

让我的代码是

config = new MapperConfiguration(cfg => 
       { 
        cfg.CreateMap<User, UserViewModel>().ForMember(m => m.RolesList, opt => opt.MapFrom(source => (source.UserRoles.Select(w=>w.Role.Name).ToList()))); 
       }); 

的RolesList是一个IEnumerable。

我该如何处理多个外键的情况?

编辑:修改后的代码现在提供角色,但在具有多个角色的用户的情况下,它仍然只给我一个角色。有没有一种方法可以获得特定用户的所有角色?

+0

'source.UserRoles'是一个IEnumerable吗? –

回答

0

我能够使用普通的Linq查询找到解决方案。

config = new MapperConfiguration(cfg => 
       { 
        cfg.CreateMap<User, UserViewModel>().ForMember(m=>m.UserRolesList, opt => opt.MapFrom(source =>source.UserRoles.Where(w=>w.UserId==source.Id).Select(w=>w.Role.Name).ToList())); 
       });