У меня есть две таблицы User
и UserRole
, которые связаны между собой с помощью таблицы ссылок UserInRole
Когда по какой-то причине я генерирую модель сущности, сущность UserInRole
не генерируется,И как вы можете видеть из рисунка, Entity Framework понимает, что существует отношение «многие ко многим» между User
и UserRole
:
![enter image description here](https://i.stack.imgur.com/bzE2c.jpg)
Мне нужно реализоватьзапрос, подобный этому
select ur.Name from [User] as u
inner join UserInRole uir on uir.UserId = u.Id
inner join UserRole ur on ur.Id = uir.UserRoleId
where u.Username = 'magename'
Я использую универсальный репозиторий, если свойство навигации существует, запрос будет выглядеть следующим образом:
from u in repository.AsQueryable<User>()
join uir in repository.AsQueryable<UserInRole>() on u.Id equals uir.UserId
join ur in repository.AsQueryable<UserRole>() on uir.UserId equals ur.Id
where u.Username == userName
select ur.Name
Но Entity Framework не генерирует UserInRoles
навигациюсобственности и связанной с ней UserInRole
сущности, поэтому вопрос, что мне делать в такой ситуации?Должен ли я удалить связь между UserInRole
и UserRole
, чтобы получить сущность UserInRole
, сгенерированную в модели, или есть какой-либо способ получить запрос, описанный выше, без каких-либо изменений в базе данных?
UPDATED
так выглядит, мне нужно сделать что-то подобное
stirng[] roles = (from u in repository.AsQueryable<User>()
where u.Username == userName
select ur.UserRoles.Select(x => x.Name)).ToArray<string>();
получить ошибку Cannot implicitly convert type 'System.Collections.Generic.List<System.Collections.Generic.IEnumerable<string>>' to 'string[]'
есть идеи?