Como faço para contar a contagem de linhas usando a API do Nibernate Queryover?
-
21-09-2019 - |
Pergunta
Estou usando a API do Queryover que faz parte do Nibernate 3.x. Gostaria de obter uma contagem de fileiras, mas o método que estou usando retorna todos os objetos e depois recebe a contagem da coleção. Existe uma maneira de apenas retornar um número inteiro/longo do número de linhas?
Estou usando:
_session.QueryOver<MyObject>().Future().Count()
Solução
Depois de brincar com a API, isso fará isso:
_session.QueryOver<MyObject>()
.Select(Projections.RowCount())
.FutureValue<int>()
.Value
Se você não quiser devolvê -lo como futuro, você pode apenas obter o SingleOrDefault<int>()
em vez de.
Outras dicas
Outro método
var count = Session.QueryOver<Employer>()
.Where(x => x.EmployerIsActive)
.RowCount();
Outro método:
int employerCount = session
.QueryOver<Employer>()
.Where(x => x.EmployerIsActive) // some condition if needed
.Select(Projections.Count<Employer>(x => x.EmployerId))
.SingleOrDefault<int>();
Estou usando assim:
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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow