我有几张表我想一起加入:
- 用户
- 用户角色
- 工作流角色
- 角色
- 工作流程
我想生成的等效 sql 类似于
select * from Users u
inner join UserRoles ur on u.UserId = ur.UserId
inner join WorkflowRoles wr on wr.RoleId = ur.RoleId
inner join Workflow w on wr.WorkflowId = w.Id
where u.Id = x
我想根据用户在一个查询中的角色来获取用户参与的所有工作流。我发现你可以得到这样的结果:
user.Roles.SelectMany(r => r.Workflows)
但这会为每个角色生成一个查询,这显然不太理想。
有没有一种适当的方法可以做到这一点,而不必求助于生成视图或编写直接 sql 之类的技巧?