У меня есть пять таблиц с первичным ключом с идентификатором
- Пользователь
- User_Role_Relation с внешними ключами User_ID и Role_ID
- Role
- Role_Right_Relation с внешними ключами Role_ID и Right_ID
- Right
В настоящее время я получаю права для выбранного пользователя с помощью следующего запроса в хранимой процедуре
SELECT DISTINCT
tbl_Right.ID, tbl_Right.Name
FROM
tbl_User_Role_Relation
INNER JOIN
tbl_Role_Right_Relation ON tbl_User_Role_Relation.Role_ID = tbl_Role_Right_Relation.Role_ID
INNER JOIN
tbl_Right ON tbl_Role_Right_Relation.Right_ID = tbl_Right.ID
WHERE
tbl_User_Role_Relation.User_ID = @User_ID
Я пытаюсь преобразовать это в LINQ to Entity с этим кодом
var query = from r in context.Rights
from rrr in r.Role_Right_Relation
from rl in rrr.Role
from urr in rl.User_Role_Relation
where urr.User_ID == userid
select r;
, но получаю следующую ошибку
Выражение типа 'Models.Role' не разрешено впоследующее предложение from в выражении запроса с типом источника 'System.Linq.IQueryable' Не удалось определить тип при вызове 'SelectMany'
Любой совет будет полезен.
Спасибо.