我对 NHibernate 比较陌生,想在一次调用中填充递归 Category -> Parent Category 关系,但我不想要整个 Category 对象(我只需要 Id 和 Name)。
我发现这个http://ayende.com/blog/4151/nhibernate-tips-tricks-efficiently-selecting-a-tree建议我应该使用JOIN FETCH
. 但是,当我这样做时,我得到了错误:
fetch 不能与 scroll() 或 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 吗?