使用 NHibernate 构建层次结构时出错 - fetch 不能与 scroll() 或 iterate() 一起使



我对 NHibernate 相对较新,想在一次调用中填充递归类别 ->父类别关系,但我不想要整个类别对象(我只需要 ID 和名称)。

我发现这个 http://ayende.com/blog/4151/nhibernate-tips-tricks-efficiently-selecting-a-tree 建议我应该使用JOIN FETCH。但是当我这样做时,我收到错误:

fetch 不能与 scroll() 或 iterate() 一起使用

总部如下:

SELECT c.CategoryId as CategoryId, c.Name as Name
FROM Category c JOIN FETCH c.ParentCategory

完整代码为:

var query = session
            .CreateQuery(@"SELECT c.CategoryId as CategoryId, c.Name as Name, c.ParentCategory as ParentCategory
                            FROM Category c JOIN FETCH c.ParentCategory")
            .SetResultTransformer(new DistinctRootEntityResultTransformer())
            .Enumerable<Category>();

我也尝试将c.ParentCategory添加到选择中,但这没有帮助。

我哪里出错了?我应该填充子类别而不是父类别吗?

这仅仅是因为您的陈述末尾的.Enumerable()调用。

例外

 fetch may not be used with scroll() or iterate()

如果查询被视为浅表查询,则将引发。并且 Enumerable() 确实将查询置于"浅层状态"......

请改用.List()

最新更新