我有一个 web 应用程序,它具有简单的用户组树结构,并正在寻找一种查询以下内容的方法:
- 顶级父母
- 任何级别的所有子组(孩子的孩子等)
- 所有家长组(我的家长、家长的家长等)
我正在使用 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 '%'+@searchTerm+'%')
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)