【发布时间】:2011-06-27 13:21:47
【问题描述】:
我对树结构和对树根应用过滤器有疑问。我需要使用 NHibernate 标准创建一个查询,它将过滤器应用于树的根(可以有不止一棵树,我需要提供根的 ID)。在普通的 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 创建相同的结果:具有给定根 ID 的项目列表(不需要保持树结构 - 它是“搜索”命令的结果,所以只是条目的集合必需的)。不幸的是,我不是 NHibernate 专家,所以...任何指南、想法都会有所帮助。
【问题讨论】:
标签: nhibernate recursion filter criteria