2

我正在使用 FetchMany 进行一些查询,NHibernate 分析器给了我以下错误:

警告:
使用集合获取指定的 firstResult/maxResults;在内存中应用!

我想这是因为 fetch 是未绑定的。有针对这个的解决方法吗?

4

1 回答 1

1

出现这个问题是因为 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)查询

于 2011-05-27T09:45:53.523 回答