我有以下3(簡化)模型類,其中每個都包含了其他的集合:獲取從另一個列表和屬性列表結果
Group.CollectionOfPermissions
Group.CollectionOfUsers
User.CollectionOfGroups
User.CollectionOfPermissions
Permission.CollectionOfGroups
Permission.CollectionOfUsers
我有一個基於關景色的單個User.ID,我希望能夠返回所述用戶的有效權限。
的有效權限基於關:
- 各個用戶的權限,這是簡單地將User.CollectionOfPermissions屬性。
- 用戶所屬組的派生權限。也就是說,對於用戶所屬的每個組,我都需要獲取這些權限。
數字1顯然和引用collection屬性一樣簡單。 2號是我在LINQ選擇方面遇到更多麻煩的地方。
我可以寫的線沿線的一個存儲過程:
SELECT * FROM PERMISSIONS P WHERE P.ID IN
(SELECT PERMISSION_ID FROM PERMISSION_GROUP_REF PGR WHERE PGR.GROUP_ID IN
(SELECT ID FROM GROUPS G WHERE G.ID IN
(SELECT GROUP_ID FROM GROUP_USER_REF GUR WHERE GUR.USER_ID IN
(SELECT ID FROM USERS U WHERE U.ID = @USERID))))
但我寧願與項目的其餘部分要記住這行,並繼續使用LINQ,尤其是因爲我想避免直接在代碼中查詢引用表(假設集合已經作爲類屬性存在)。我將如何處理這種LINQ查詢?
編輯:這是使用實體框架6剃刀3
您使用的是什麼o/rm技術?實體框架?什麼版本? –
@IainGalloway將詳細編輯,很好的電話! – TheQ