Come faccio ad avere conteggio delle righe utilizzando l'API NHibernate QueryOver?
-
21-09-2019 - |
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()
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