Nhibernate Take+FetchMany+返回意外结果

Nhibernate Take+FetchMany+返回意外结果,nhibernate,Nhibernate,我正试图弄清楚如何拍一张,然后把很多人聚在一起 var c = session.Query<Table1>().Take(5).FetchMany(x => x.Table2).ToList(); 我希望它从表1返回5行,从表2中返回未绑定的结果。相反,我从表1中得到一行,从表2中得到5行 var c = session.Query<Table1>().Take(1000).FetchMany(x => x.Table2).ToList(); 我从表1中得

我正试图弄清楚如何拍一张,然后把很多人聚在一起

var c = session.Query<Table1>().Take(5).FetchMany(x => x.Table2).ToList();
我希望它从表1返回5行,从表2中返回未绑定的结果。相反,我从表1中得到一行,从表2中得到5行

var c = session.Query<Table1>().Take(1000).FetchMany(x => x.Table2).ToList();
我从表1中得到309条记录,总共有6200条记录


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

我不是陛下,但这对您的代码有什么影响,但是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查询,而不是

嗯,我不是sire,但这对您的代码有什么影响,但是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查询来代替

您似乎在使用Nhibernate时遇到了很多问题染料。我更习惯于用linq写东西,但不得不用HQL写,这对我也没什么帮助。所以,尝试在linq中工作,然后转到HQL从linq转到HQL并不是任何人都会推荐的。。您正在引入模型和回购代码之间的紧密耦合..不。我有一个类似NHibernate2.0的项目,它使用hql。对,似乎决定了它必须在hql上停留在NHibernate2.0。然而,该项目需要一段时间来运行,所以在我将其实现到主项目中之前,我有自己的模型来进行测试。有时,我似乎更容易在linq中首先使用右键,然后尝试将其转换为hql。您似乎在Nhibernate中遇到了很多问题..:染料。我更习惯于用linq写东西,但不得不用HQL写,这对我也没什么帮助。所以,尝试在linq中工作,然后转到HQL从linq转到HQL并不是任何人都会推荐的。。您正在引入模型和回购代码之间的紧密耦合..不。我有一个类似NHibernate2.0的项目,它使用hql。对,似乎决定了它必须在hql上停留在NHibernate2.0。然而,该项目需要一段时间来运行,所以在我将其实现到主项目中之前,我有自己的模型来进行测试。有时候,我似乎更容易在linq中先右键,然后尝试将其转换为hql。最终目标是拥有hql。以你的问题为例。我试了一些我在stack上找到的类似的东西。我想知道你的和那一个是如何工作的。我还注意到你的查询返回了5条记录,但据我所知,它们都是一样的。他们有相同的身份证和相同的信息。我也想问一下。take在使用fetch时是否总是从内存中获取子集?那么是否可以执行我想要执行的操作?或者这是nhibernate做一个不在记忆中的拍摄的限制吗?请始终记录您关于返回5张记录的问题。。是否在表1中只有一条记录?最终目标是拥有HQL。以你的问题为例。我试了一些我在stack上找到的类似的东西。我想知道你的和那一个是如何工作的。我还注意到你的查询返回了5条记录,但据我所知,它们都是一样的。他们有相同的身份证和相同的信息。我也想问一下。take在使用fetch时是否总是从内存中获取子集?那么是否可以执行我想要执行的操作?或者这是nhibernate做一个不在记忆中的拍摄的限制吗?请始终记录您关于返回5张记录的问题。。是不是表1中只有一条记录??