拿+ FetchMany +返回意外结果

时间:2011-11-21 19:31:32

标签: nhibernate

我想弄清楚如何一起做Take和FetchMany。

var c = session.Query<Table1>().Take(5).FetchMany(x => x.Table2).ToList();

我希望从Table1返回5行,从Table2返回未绑定的结果。相反,我从Table1返回一行,从Table2获得5行。

var c = session.Query<Table1>().Take(1000).FetchMany(x => x.Table2).ToList();

我从Table1获得了309条记录(共有6200条记录)。

我不知道nhibernate如何决定返回那么多记录。

1 个答案:

答案 0 :(得分:4)

我不是父亲但是这对你的代码有什么影响,但是fetchmany会把整个结果集带到内存然后取出指定的子集。

使用joinqueryover或joinalias来实现相同的目的..

var c = session.Query<Table1>().Take(5).FetchMany(x => x.Table2).ToList();

这变成了

Table2 table2Alias=null;
var c = session.QueryOver<Table1>().JoinAlias(x => x.Table2,()=>table2Alias).Take(5).ToList();

让我知道它是否适合您..或者您可以编写HQL查询