我有一个公司的树状表示,它存储在数据库中,如下表:
ID ParentID Name
==================================
1 NULL Company
2 1 Division one
3 1 Division two
4 1 Division three
5 2 Department 1.1
6 3 Department 2.1
7 3 Department 2.2
8 3 Department 2.3
9 4 Department 3.1
10 NULL Company 2
现在,当我授予用户权限时,我需要将他分配给上表中的组,如果我将他分配给组,他将自动获得子组的权限。如果它是关于一组的,我可以很容易地检查这个。但是例如,如果我授予用户权限(第 2 部分),然后用户正在(部门 2.2)上进行一些交易,我需要找到一种自动允许交易的方法,因为用户已经被允许在父组上。我只能想到检查目标组的递归方法,如果用户对其没有权限并且它有一个父组,那么我会回忆起相同的方法来验证其父组,依此类推,直到我找到一个用户被允许的组对于或到达根组,而不是对用户进行身份验证。请记住,孩子可以在其中拥有另一个孩子,依此类推。
有没有办法以更好的方式做到这一点?使用 Linq 还是普通的旧 T-SQL?