C# NHibernate 3.0 Linq提供程序。选择“跳过并停止后不工作”
嗨,我使用NHiberante来填充我的web应用程序的分页和排序网格。 在我决定将投影付诸实施之前,它一直运作良好 这是原始的工作代码:C# NHibernate 3.0 Linq提供程序。选择“跳过并停止后不工作”,c#,linq,nhibernate,linq-to-nhibernate,C#,Linq,Nhibernate,Linq To Nhibernate,嗨,我使用NHiberante来填充我的web应用程序的分页和排序网格。 在我决定将投影付诸实施之前,它一直运作良好 这是原始的工作代码: var data = repository .Where(predicate); .OrderBy(columns) .Skip(amount) .Take(anotherAmount); 然后我开始介绍我的投影,效果也很好: var data = repository .Where(predicate);
var data = repository
.Where(predicate);
.OrderBy(columns)
.Skip(amount)
.Take(anotherAmount);
然后我开始介绍我的投影,效果也很好:
var data = repository
.Where(predicate);
.OrderBy(columns)
.Select(myProjection);
我很高兴一切正常,所以我添加了缺少的Skip和Take,但stop-now Nhibernate声明不支持Select(NotSupportedException)。代码:
是虫子还是我做错了什么 在执行查询时调用.Count()时,查询不再存在。您需要发出两个单独的查询来获取计数和列表
您可以使用Future或MultiQuery做一些有趣的事情
编辑:
这里的第二篇文章应该能够为您指出正确的方向。在我看来,这是NH的一个错误。在3.3.1.4000版本中,它可以正常工作。Count()不是这里的情况(如果我删除它,错误仍然存在),因此我将从代码示例中删除它。哦,你能显示整个查询吗,存储库中的部分也可以吗?存储库只是LinqProvider-取自ISession。Query99%确定Linq提供程序不支持投影,您需要使用QueryOver.it(我编写了它-第二个代码示例很好),但感谢您的时间:)这是一个已知的bug。
var data = repository
.Where(predicate);
.OrderBy(columns)
.Skip(amount)
.Take(anotherAmount)
.Select(projection);