2009-02-16 7 views

उत्तर

30

यह वास्तव में HQL में बहुत आसान है:

var top15 = session.CreateQuery("from SomeEntity") 
       .SetFirstResult(0) 
       .SetMaxResults(15) 
       .List<SomeEntity>(); 

कैसे यद्यपि मापदंड एपीआई का उपयोग कर यह करने के लिए पता नहीं है।

+0

+1। हू यह बहुत अजीब है। मैंने सोचा कि जवाब एचक्यूएल "सुरंग" स्ट्रिंग का हिस्सा होगा। दिलचस्प। – BuddyJoe

+3

यह उत्तर वास्तव में एचक्यूएल का एक संकर है और मानदंड एपीआई –

+0

हाँ .. यह अनिवार्य रूप से मानदंड के समान है ... बस 'CreateCriteria () ' – dotjoe

10

मानदंड एपीआई विधि:

एक .Skip(someInt) में
var top15 = session.QueryOver<SomeEntity>().Take(15).List(); 

फेंक अगर आप एक निर्धारित करने होंगे:

ICriteria criteria = DaoSession.CreateCriteria(typeof(T)); 
criteria.SetFirstResult(StartIndex); 
criteria.SetMaxResults(MaximumObjects); 
return criteria.List<T>(); 
+0

+1। मुझे इस अधिकतम ऑब्जेक्ट्स को देखना होगा। बहुत अच्छा। – BuddyJoe

+1

अधिकतम ऑब्जेक्ट्स केवल एक पूर्णांक चर है जो SetMaxResults को बताने के लिए कितनी ऑब्जेक्ट्स लौटाता है। आपके मामले में, आप इसके बजाय हार्ड कोड 15 कर सकते हैं, यानी मानदंड। SetMaxResults (15); –

+0

हाहा ... इसलिए दूसरे शब्दों में यह उदाहरण के बाद CreateQuery() के समान है। –

0

पूर्णता के लिए, यहाँ कैसे QueryOver एपीआई NHibernate 3.0 में शुरू की के साथ यह करने के लिए है सूचकांक शुरू करें, उदाहरण के लिए पेजिंग के लिए।

0

mookid8000 झूठी जानकारी दे रहा है।

वहाँ HQL साथ :(

यह हमेशा नेट के लिए तालिका के सभी डाउनलोड करता है और टॉप लेता एसक्यूएल टॉप एन स्थापित करने का कोई तरीका नहीं है, जो सिर्फ सादा बेवकूफ है!

2

NHibernate 3.2 से आप क्वेरी के अंत में HQL में SKIP n/TAKE n इस्तेमाल कर सकते हैं यह है जहाँ आप SetMaxResults उपयोग नहीं कर सकते सबक्वेरी में बहुत सहायक हो सकता है

उदाहरण के लिए:।।

select l, (select u from User u where u.Location = l order by u.Date asc take 1) 
from Location l 
संबंधित मुद्दे