Comment puis-je obtenir le nombre de lignes utilisant la NHibernate QueryOver api?
-
21-09-2019 - |
Question
J'utilise le api QueryOver qui fait partie de NHibernate 3.x. Je voudrais obtenir un nombre de lignes, mais la méthode que je utilise retourne tous les objets et obtient alors le compte de la collection. Est-il possible de revenir juste un entier / valeur longue du nombre de lignes?
J'utilise actuellement:
_session.QueryOver<MyObject>().Future().Count()
La solution
Après un peu de jouer avec l'api, ce fera:
_session.QueryOver<MyObject>()
.Select(Projections.RowCount())
.FutureValue<int>()
.Value
Si vous ne voulez pas le retourner comme un futur, vous pouvez simplement obtenir le SingleOrDefault<int>()
à la place.
Autres conseils
Une autre méthode
var count = Session.QueryOver<Employer>()
.Where(x => x.EmployerIsActive)
.RowCount();
Une autre méthode:
int employerCount = session
.QueryOver<Employer>()
.Where(x => x.EmployerIsActive) // some condition if needed
.Select(Projections.Count<Employer>(x => x.EmployerId))
.SingleOrDefault<int>();
Im en utilisant comme ceci:
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();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow