Pregunta

Estoy usando la API QueryOver que forma parte de NHibernate 3.x. Me gustaría obtener un recuento de filas, pero el método que estoy usando devuelve todos los objetos y luego se hace el recuento de la colección. ¿Hay una manera de devolver un solo / a largo valor entero del número de filas?

Actualmente estoy usando:

_session.QueryOver<MyObject>().Future().Count()
¿Fue útil?

Solución

Después de un poco de jugar un poco con el API, esto hará que:

_session.QueryOver<MyObject>()
    .Select(Projections.RowCount())
    .FutureValue<int>()
    .Value

Si no quiere volverlo como futuro, sólo puede obtener la SingleOrDefault<int>() lugar.

Otros consejos

Otro método

var count = Session.QueryOver<Employer>()
    .Where(x => x.EmployerIsActive)
    .RowCount();

Otro método:

int employerCount = session
  .QueryOver<Employer>()
  .Where(x => x.EmployerIsActive) // some condition if needed
  .Select(Projections.Count<Employer>(x => x.EmployerId))
  .SingleOrDefault<int>();

Im usando la siguiente manera:

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();

    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top