【发布时间】:2014-02-18 02:03:45
【问题描述】:
我正在使用 NHibernate 3.x 中的 QueryOver api。我想获得行数,但我使用的方法返回所有对象,然后获取集合的计数。有没有办法只返回行数的整数/长值?
我目前正在使用:
_session.QueryOver<MyObject>().Future().Count()
【问题讨论】:
标签: nhibernate queryover rowcount
我正在使用 NHibernate 3.x 中的 QueryOver api。我想获得行数,但我使用的方法返回所有对象,然后获取集合的计数。有没有办法只返回行数的整数/长值?
我目前正在使用:
_session.QueryOver<MyObject>().Future().Count()
【问题讨论】:
标签: nhibernate queryover rowcount
在使用了 api 之后,就可以了:
_session.QueryOver<MyObject>()
.Select(Projections.RowCount())
.FutureValue<int>()
.Value
如果您不想将其作为未来返回,则可以改为获取 SingleOrDefault<int>()。
【讨论】:
另一种方法
var count = Session.QueryOver<Employer>()
.Where(x => x.EmployerIsActive)
.RowCount();
【讨论】:
另一种方法:
int employerCount = session
.QueryOver<Employer>()
.Where(x => x.EmployerIsActive) // some condition if needed
.Select(Projections.Count<Employer>(x => x.EmployerId))
.SingleOrDefault<int>();
【讨论】:
我是这样使用的:
public int QuantidadeTitulosEmAtraso(Sacado s)
{
TituloDesconto titulo = null;
Sacado sacado = null;
var titulos =
_session
.QueryOver<TituloDesconto>(() => titulo)
.JoinAlias(() => titulo.Sacado, () => sacado)
.Where(() => sacado.Id == s.Id)
.Where(() => titulo.Vencimento <= DateTime.Today)
.RowCount();
}
【讨论】: