一緒に結合したいテーブルがいくつかあります。
- ユーザー
- UserRoles
- WorkflowRoles
- 役割
- ワークフロー
私が生成したい同等の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
1つのクエリでの役割に基づいて、ユーザーが参加しているすべてのワークフローを取得したいと思います。次のような結果が得られることがわかりました。
user.Roles.SelectMany(r => r.Workflows)
ただし、これにより、ロールごとにクエリが生成されますが、これは明らかに理想的とは言えません。
ビューの生成やストレートSQLの記述などのハックに頼ることなくこれを行う適切な方法はありますか?