我想弄清楚如何一起做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如何决定返回那么多记录。
答案 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查询