会社を表すツリーのようなものがあり、次のテーブルとしてデータベースに保存されます。
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
ここで、ユーザーに権限を与えるとき、上の表からグループに割り当てる必要があります。グループに割り当てると、子グループに対する権限が自動的に付与されます。1グループくらいなら簡単に確認できます。ただし、たとえば、ユーザーに (部門 2) のアクセス許可を与え、ユーザーが (部門 2.2) でトランザクションを行っている場合、ユーザーは既に親グループで許可されているため、トランザクションを自動的に許可する方法を見つける必要があります。対象のグループをチェックする再帰的な方法しか考えられません。ユーザーがそのグループにアクセス許可を持っておらず、親グループがある場合は、同じ方法を思い出してその親を認証し、ユーザーが許可されているグループが見つかるまで繰り返します。または root グループに到達し、ユーザーを認証しません。子はその中に別の子を持つことができることなどを覚えておいてください。
これをより良い方法で行う方法はありますか?Linq または単純な古い T-SQL のどちらを使用していますか?