自动映射到多个外键

时间:2016-12-14 18:10:34

标签: c# asp.net-mvc automapper

我正在使用包含用户详细信息的分页列表。所有细节都来自User表,除了我从UserRole表中获取ID的角色,我用它来从角色表中获取角色。一个用户可能有多个角色。因此,UserRole表基本上具有UserID和RoleID作为连接User和Role表的外键。

所以我的代码是

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。

在这种情况下我如何处理多个外键?

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

1 个答案:

答案 0 :(得分:1)

我能够使用普通的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()));
                });