2010-03-22 28 views
26

NHibernate 3.x'in bir parçası olan QueryOver API'sini kullanıyorum. Bir satır sayısı almak istiyorum, ancak kullandığım yöntem tüm nesneleri döndürür ve sonra koleksiyonun sayısını alır. Satır sayısının tamsayı/uzun değerini döndürmenin bir yolu var mı?NHibernate QueryOver API kullanarak satır sayısını nasıl alabilirim?

Şu anda kullanıyorum:

_session.QueryOver<MyObject>().Future().Count() 

cevap

38

API ile oynamak biraz sonra bu yapacağım:

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

bir şekilde geri vermek istemiyorsanız Gelecekte, bunun yerine SingleOrDefault<int>()'u alabilirsiniz.

+1

+1, Mükemmel cevap ... ayrıca yararlı ekstra bir yorum. – cyrotello

8

başka yöntem: Böyle kullanarak

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

başka yöntem

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

Im:

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

    }