У меня проблема с древовидной структурой и применением фильтров к корню дерева.Мне нужно создать запрос с использованием критериев NHibernate, который будет применять фильтр к самому корню дерева (может быть более одного дерева, и мне нужно предоставить идентификатор корня).В простом sql это будет выглядеть примерно так:
WITH c ( Node, Parent, Child, LEVEL )
AS ( SELECT N.CatalogNodeId ,
N.ParentCatalogNodeId ,
N.CatalogNodeId ,
CAST(0 AS BIGINT)
FROM CatalogNode N
WHERE N.ParentCatalogNodeId IS NULL
UNION ALL
SELECT C.Node ,
N.ParentCatalogNodeId ,
N.CatalogNodeId ,
C.Level + 1
FROM CatalogNode N
JOIN c ON C.Child = n.ParentCatalogNodeId
)
SELECT
c.Child
FROM c
JOIN dbo.CatalogItem CI ON Ci.CatalogNodeId = c.Child
JOIN dbo.Item I ON I.ItemId = CI.ItemId
WHERE C.Node = @Node_Id
Этот запрос возвращает именно то, что я хочу, но это только часть большего запроса.Мне нужно использовать критерии API для создания того же результата: список элементов с заданным корневым идентификатором (сохранение древовидной структуры не требуется - это результат команды «поиск», поэтому просто набор записейтребуется).К сожалению, я не эксперт NHibernate, поэтому ... любые руководства, идеи будут полезны.