我正在使用 FetchMany 进行一些查询,NHibernate 分析器给了我以下错误:
警告:
使用集合获取指定的 firstResult/maxResults;在内存中应用!
我想这是因为 fetch 是未绑定的。有针对这个的解决方法吗?
我正在使用 FetchMany 进行一些查询,NHibernate 分析器给了我以下错误:
警告:
使用集合获取指定的 firstResult/maxResults;在内存中应用!
我想这是因为 fetch 是未绑定的。有针对这个的解决方法吗?
出现这个问题是因为 usingFetchMany
会将整个结果集带到内存中,然后取指定的子集(效率低下且有潜在危险)。
显然,在使用FetchMany
.
解决方案是使用 aJoinQueryOver
或 a JoinAlias
(两者的差异已在其他 SO 问题中讨论过)
所以很想做
Session.QueryOver<Product>().FetchMany(p=>p.Images).Take(5)
这会在问题中产生警告,我们这样做
Image image = null;
Session.QueryOver<Product>().Left.JoinQueryOver(x => x.Images, () => image).Take(5)
产生一个SELECT TOP (5)
查询