gpt4 book ai didi

nhibernate - 如何在 NHibernate 中选择最大值?

转载 作者:行者123 更新时间:2023-12-03 18:08:07 25 4
gpt4 key购买 nike

我需要从数据库中获取最大页面顺序:

int maxOrder = GetSession.Query<Page>().Max(x => x.PageOrder);

如果数据库表中有行,则上述方法有效,但是当表为空时,我得到:
Value cannot be null.
Parameter name: item

最佳答案

按照您的方式,将异常作为可枚举项是正常的,即 GetSession.Query<Page>()返回,是空的(因为你提到的表是空的)。

您应该得到的异常(exception)是:序列不包含任何元素。
您在问题中提到的异常(exception)是因为 item 变量(与您在上面列出的 NHiberanate 查询无关)为 null(第 54 行将 item 属性分配为 null)。

从表中的属性获取最大值的更安全方法如下:

var max = GetSession.CreateCriteria<Page>()
.SetProjection(Projections.Max("PageOrder"))
.UniqueResult();

或者在 NHibenrate 3.0 中使用 QueryOver:
var max = GetSession.QueryOver<Page>()
.Select(
Projections
.ProjectionList()
.Add(Projections.Max<Page>(x => x.PageOrder)))
.List<int>().First();

如果表为空,您将获得 max = 0

关于nhibernate - 如何在 NHibernate 中选择最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4758405/

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