2016-12-14 2 views
0

Я использую список подкачки, в котором есть данные о пользователе. Все данные поступают из таблицы User, за исключением роли, которую я получаю из таблицы UserRole, которую я использую для получения ролей из таблицы ролей. Существует вероятность того, что один пользователь будет иметь несколько ролей. Таким образом, в основном таблица UserRole имеет UserID и RoleID как внешние ключи, которые соединяют таблицу User and 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.

Как я могу в этом случае использовать несколько внешних ключей?

EDIT: измененный код теперь дает роль, но в случае пользователя с несколькими ролями, он по-прежнему дает мне только одну роль. Есть ли способ получить все роли для конкретного пользователя?

+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())); 
       }); 
Смежные вопросы