29

我正在使用 NHibernate 3.x 中的 QueryOver api。我想获得行数,但我使用的方法返回所有对象,然后获取集合的计数。有没有办法只返回行数的整数/长值?

我目前正在使用:

_session.QueryOver<MyObject>().Future().Count()
4

4 回答 4

44

在玩了一些 api 之后,这将做到:

_session.QueryOver<MyObject>()
    .Select(Projections.RowCount())
    .FutureValue<int>()
    .Value

如果您不想将其作为未来返回,则可以SingleOrDefault<int>()改为获得。

于 2010-03-22T17:07:54.957 回答
36

另一种方法

var count = Session.QueryOver<Employer>()
    .Where(x => x.EmployerIsActive)
    .RowCount();
于 2012-01-05T11:09:14.290 回答
8

另一种方法:

int employerCount = session
  .QueryOver<Employer>()
  .Where(x => x.EmployerIsActive) // some condition if needed
  .Select(Projections.Count<Employer>(x => x.EmployerId))
  .SingleOrDefault<int>();
于 2011-07-08T13:14:45.213 回答
7

我这样使用:

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();

    }
于 2012-11-27T14:27:31.793 回答