1
我有羣組的簡單樹結構和尋找一種方式來查詢這樣的事情作爲一個Web應用程序:在任何級別創建遞歸Linq到實體查詢? (像遞歸CTE)
- 頂級父
- 所有子組(孩子的兒童和等)
- 所有父組(我的父,母等的母公司)
我使用MS SQL所以它不是一個大問題,寫的選擇,我需要在DB和保存他們作爲存儲過程。
但是有沒有辦法使用EntityToSql來創建這樣的查詢?
這裏是例如TSQL查詢我使用的:
DECLARE @userGroupId uniqueidentifier
DECLARE @searchTerm nvarchar(20)
SET @userGroupId = '00000000-0000-0000-0000-000000000000'
Set @searchTerm = 'test'
;WITH n(lvl,id,ParentUserGroupId,FullName) AS (
SELECT 1,id,ParentUserGroupId,FullName FROM UserGroups where
id in (select UserGroupId
FROM Users WHERE login like '%'[email protected]+'%')
UNION ALL
SELECT n.lvl+1, nplus1.id,nplus1.ParentUserGroupId, nplus1.FullName
FROM UserGroups as nplus1,n WHERE n.ParentUserGroupId = nplus1.id
)
SELECT DIStinct id,FullName
FROM n where ParentUserGroupId = @userGroupId OR
((@userGroupId IS NULL OR @userGroupId = '00000000-0000-0000-0000-000000000000')
AND ParentUserGroupId IS NULL)
是的,這是它現在在我們的項目中的方式。 仍然爲每個新案例創建新的表值函數或存儲過程要慢得多,並且看起來不錯(我寧願不在數據庫中保存任何邏輯,甚至查詢邏輯)。 遞歸查詢並不是非常罕見的情況,奇怪的是沒有辦法從實體創建這樣的查詢。 我真的希望有一些神奇的地方=) –