Domanda

Sto utilizzando l'API QueryOver che fa parte di NHibernate 3.x. Mi piacerebbe avere un conteggio delle righe, ma il metodo che sto utilizzando restituisce tutti gli oggetti e poi si fa il conteggio della collezione. C'è un modo per restituire solo un / lungo valore intero del numero di righe?

Attualmente sto usando:

_session.QueryOver<MyObject>().Future().Count()
È stato utile?

Soluzione

Dopo un po 'di giocare con l'API, questo lo farà:

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

Se non si desidera tornare come un futuro, si può solo ottenere il SingleOrDefault<int>() invece.

Altri suggerimenti

Un altro metodo

var count = Session.QueryOver<Employer>()
    .Where(x => x.EmployerIsActive)
    .RowCount();

Un altro metodo:

int employerCount = session
  .QueryOver<Employer>()
  .Where(x => x.EmployerIsActive) // some condition if needed
  .Select(Projections.Count<Employer>(x => x.EmployerId))
  .SingleOrDefault<int>();

Im usando in questo modo:

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

    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top