Wie kann ich die Zeilenanzahl mit dem NHibernate QueryOver api bekommen?
-
21-09-2019 - |
Frage
Ich bin mit dem QueryOver api, dem Teil von NHibernate 3.x. Ich möchte eine Zeilenanzahl erhalten, aber die Methode ich benutze gibt alle Objekte und bekommt dann die Zählung der Sammlung. Gibt es eine Möglichkeit, nur eine ganze Zahl / long-Wert der Anzahl der Zeilen zurück?
Ich bin derzeit mit:
_session.QueryOver<MyObject>().Future().Count()
Lösung
Nach einem bisschen mit der api herum spielen, das wird es tun:
_session.QueryOver<MyObject>()
.Select(Projections.RowCount())
.FutureValue<int>()
.Value
Wenn Sie es nicht als Zukunft zurückkehren möchten, können Sie einfach anstelle der SingleOrDefault<int>()
erhalten.
Andere Tipps
Eine andere Methode
var count = Session.QueryOver<Employer>()
.Where(x => x.EmployerIsActive)
.RowCount();
Eine andere Methode:
int employerCount = session
.QueryOver<Employer>()
.Where(x => x.EmployerIsActive) // some condition if needed
.Select(Projections.Count<Employer>(x => x.EmployerId))
.SingleOrDefault<int>();
Im wie dies mit:
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();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow