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()
War es hilfreich?

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
scroll top