2011-09-08 18 views
7

यह NHibernate blog entry नोट करता है कि कैसे QueryOver क्वेरीज (DetachedCriteria के अनुरूप) बनाया जा सकता है (QueryOver.Of<T>() का उपयोग करके)। हालांकि, इसे देखकर, यह मेरे जैसा समान नहीं दिखता है।आप पृथक प्रश्नोत्तरी उदाहरणों के साथ कैसे काम करते हैं?

DetachedCriteria के साथ, मैं अपने उदाहरण बन जाएगा और इसे सेट अप हालांकि मैं की जरूरत है, और बाद में फोन GetExecutableCriteria() तो सत्र असाइन और क्वेरी को निष्पादित करने के। "अलग" QueryOver के साथ, अधिकांश एपीआई अनुपलब्ध है (यानी, प्रतिबंध जोड़ने, जुड़ने, ऑर्डर करने आदि ...) जब तक कि मैं GetExecutableQueryOver पर कॉल नहीं करता, जिसके लिए ISession या IStatelessSession लेता है, जिस बिंदु पर आप अब डिस्कनेक्ट नहीं होते हैं ।

आप अलग QueryOver उदाहरणों के साथ कैसे काम करते हैं?

संपादित करें:

वास्तविक समस्या यह है कि मैं अलग QueryOver उदाहरण के संचय कर रहा हूँ से संबंधित था:

public class CriteriaQuery<T> 
{ 
    internal protected QueryOver<T> _QueryOver { get; set; } 

    public CriteriaQuery() 
    { 
     _QueryOver = QueryOver.Of<T>(); 
    } 

    // Snip 
} 

यह एक QueryOver<T, T> होना चाहिए।

+0

वास्तविक समस्या आप नीचे दिए गए उल्लेख क्या था? – ruffin

+0

'क्वेरीऑवर ' में एपीआई की अपेक्षा नहीं थी; 'QueryOver ' मुझे जो चाहिए वह है। –

उत्तर

12

मैं NHibernate 3.1.0.4000 उपयोग कर रहा हूँ। निम्नलिखित कोड को सफलतापूर्वक संकलित:

Employee salesRepAlias = null; 

var query = QueryOver.Of<Customer>() 
    .JoinAlias(x => x.SalesRep,() => salesRepAlias) 
    .Where(x => x.LastName == "Smith") 
    .Where(() => salesRepAlias.Office.Id == 23) 
    .OrderBy(x => x.LastName).Asc 
    .ThenBy(x => x.FirstName).Asc; 

return query.GetExecutableQueryOver(session) 
    .List(); 

इस प्रतिबंध का उपयोग कर दिखाता है, मिलती है, और बस की तरह आप एक नियमित एक साथ होता है एक अलग QueryOver पर आदेश देने।

आप कोड है कि एपीआई सुविधाओं है कि उपलब्ध नहीं हैं दर्शाता है पोस्ट कर सकते हैं?

+0

ने अपना उत्तर चुना और प्रश्न में वास्तविक समस्या को जोड़ा, क्योंकि आपकी पोस्ट ने मुझे समस्या की ओर धक्का दिया। धन्यवाद। –

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