我有一個樹結構的問題,並將過濾器應用到樹根。我需要使用NHibernate標準來創建一個查詢,這個標準將把過濾器應用到樹的根部(可以有多個樹,我需要提供根的ID)。在普通的SQL,這將看某事像:NHibernate和遞歸查詢過濾器
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來創建相同的結果:具有給定根ID的項目列表(保持樹結構不是必需的 - 這是「搜索」命令的結果,因此只是一組條目是需要)。不幸的是,我不是NHibernate的專家,所以...任何指南,想法都會有所幫助。
我會,但正如我所說,這只是更大的處理的一部分,其餘使用標準api。據我所知,在單個查詢(或不是?)中混合使用普通sql ad標準api是不可能的,所以我必須找到一些方法將此過濾器添加到現有代碼中。 – user817409
@ user817409:無法在同一查詢中混用它們,這是正確的。但是,沒有一個本地NH API支持遞歸查詢,所以如果你需要的話,你會被SQL困住。 –