gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:36 25 4
gpt4 key购买 nike

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

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

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

HQL如下:

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 添加到选择中,但这没有帮助。

我哪里错了?我应该填充 ChildCategories 而不是 ParentCategory 吗?

最佳答案

这仅仅是因为在语句末尾调用了 .Enumerable()

异常

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

如果查询被视为浅查询,将被抛出。 Enumerable() 确实将查询置于“浅层状态”...

相反,使用 .List()

关于c# - 使用 NHibernate 构建层次结构时出错 - fetch 不能与 scroll() 或 iterate() 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com