NHibernate Projections.Max如何处理空表?

NHibernate Projections.Max如何处理空表?,nhibernate,Nhibernate,我试图获取表中整型字段的最大值。具体来说,我试图在添加新发票时自动增加“InvoiceNumber”字段。但是,我不希望它成为数据库中的自动增量字段,因为它由用户控制——我只是尝试处理默认情况。现在,我正在使用 session.CreateCriteria<Invoice>() .SetProjection(Projections.Max("InvoiceNumber")) .FutureValue<int>(); 使用….UniqueV

我试图获取表中整型字段的最大值。具体来说,我试图在添加新发票时自动增加“InvoiceNumber”字段。但是,我不希望它成为数据库中的自动增量字段,因为它由用户控制——我只是尝试处理默认情况。现在,我正在使用

session.CreateCriteria<Invoice>()
        .SetProjection(Projections.Max("InvoiceNumber"))
        .FutureValue<int>();
使用…
.UniqueValue()


NH在其多标准实现中使用非通用IList。用于FutureValue批处理。有关
列表
无法通过ILST实现添加null的原因,请参阅。我很惊讶我以前从未遇到过这种情况。避免在未来或多标准中使用可为空的值类型。

在QueryOver API中:

Session.QueryOver<T>()
      .Select(Projections.Max<Statistic>(s => s.PeriodStart))
      .SingleOrDefault<object>();
Session.QueryOver()
.Select(projects.Max(s=>s.PeriodStart))
.SingleOrDefault();

如果nothing返回null,否则将结果强制转换为numeric

FutureValue也会出现同样的问题。我本想在问题中加上它,但忘了把它放在代码范围内,所以泛型丢失了——对不起!还有其他想法吗?奇怪,你在用哪个数据库?InvoiceNumber是什么数据类型?另外,该异常在哪里引发?您是否在任何地方使用非通用的IList?我使用的是SQL Server(特别是2005年,但它也发生在2000年和(我想)2008年)。InvoiceNumber是一个整数。如果有帮助的话,我已经在问题中添加了一个例外。
Session.QueryOver<T>()
      .Select(Projections.Max<Statistic>(s => s.PeriodStart))
      .SingleOrDefault<object>();