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()
Était-ce utile?

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