我对 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()