Как получить количество строк с помощью API NHibernate QueryOver?
-
21-09-2019 - |
Вопрос
Я использую API QueryOver, который является частью NHibernate 3.x.Я хотел бы получить количество строк, но метод, который я использую, возвращает все объекты, а затем получает счетчик коллекции.Есть ли способ просто вернуть целое/длинное значение количества строк?
В настоящее время я использую:
_session.QueryOver<MyObject>().Future().Count()
Решение
После небольшой игры с API, это сделает это:
_session.QueryOver<MyObject>()
.Select(Projections.RowCount())
.FutureValue<int>()
.Value
Если вы не хотите возвращать его в будущем, вы можете просто получить SingleOrDefault<int>()
вместо.
Другие советы
Другой метод
var count = Session.QueryOver<Employer>()
.Where(x => x.EmployerIsActive)
.RowCount();
Другой метод:
int employerCount = session
.QueryOver<Employer>()
.Where(x => x.EmployerIsActive) // some condition if needed
.Select(Projections.Count<Employer>(x => x.EmployerId))
.SingleOrDefault<int>();
Я использую так:
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();
}
Не связан с StackOverflow