gpt4 book ai didi

nhibernate - NHibernate提取返回错误的行计数

转载 作者:行者123 更新时间:2023-12-02 03:58:07 27 4
gpt4 key购买 nike

我在项目中设置了一个API,供网格调用以获取审核记录以显示给管理员。网格具有无限滚动设置,并使用mvc4内置的oData。因此,它将使用$ top等于应该获取的行数并设置$ skip设置为到达正确的页面来调用api。

在API内,我对nhibernate进行了此调用,以获取IQueryable以返回MVC4以完成其黑暗的oData魔术:
m_session.Query<AuditInfo>().FetchMany(x => x.Parameters).Fetch(x => x.AuditType).Fetch(x => x.Status)
在此,AuditInfo具有一组悬挂的参数,以及用于类型和状态的查找表。

我的问题是,如果我要30行,它将返回一些<=30。我已经能够对此进行一点跟踪,问题似乎是nhibernate在同一查询中具有TOPJOIN语句,因此当审核中有多个参数时,它会创建审核的副本以保存第二个参数以将其返回。这样做会占用查询允许的TOP(30)中的空间。然后,当它回到nhibernate时,它似乎合并了这些行,给我留下了一个记录少于我想要的集合。

我在这里的问题是:如何设置此调用,这样我可以获得准确数量的记录,而不必求助于分别获取参数和进行n + 1次查询?

最佳答案

基本上,您不容易,因为sql就是这样工作的。忽略FetchMany,它应该使用Select N + 1起作用。为了解决这个问题,您可以调整集合批处理大小,以便NH一次加载多个同类型的集合。

关于nhibernate - NHibernate提取返回错误的行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11694480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com