2010-03-22 12 views
26

मैं क्वेरीओवर एपीआई का उपयोग कर रहा हूं जो NHibernate 3.x का हिस्सा है। मैं एक पंक्ति गिनती प्राप्त करना चाहता हूं, लेकिन जिस विधि का मैं उपयोग कर रहा हूं वह सभी वस्तुओं को लौटाता है और फिर संग्रह की गिनती प्राप्त करता है। क्या पंक्तियों की संख्या के पूर्णांक/लंबे मूल्य को वापस करने का कोई तरीका है?मैं NHibernate QueryOver api का उपयोग करके पंक्ति गणना कैसे प्राप्त करूं?

मैं वर्तमान में उपयोग कर रहा हूँ:

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

उत्तर

38

एपीआई के साथ प्रयोग करना का एक सा के बाद, इस लिए यह करना होगा:

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

आप एक के रूप में यह वापस जाने के लिए नहीं करना चाहते हैं भविष्य में, आप इसके बजाय SingleOrDefault<int>() प्राप्त कर सकते हैं।

+1

+1, बिल्कुल सही जवाब ... अतिरिक्त टिप्पणी भी उपयोगी। – cyrotello

8

एक अन्य विधि:

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

एक अन्य विधि

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

इम इस तरह का उपयोग कर:

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

    } 
संबंधित मुद्दे