2010-08-02 15 views
12

मेरे पास एक उपयोग केस है जहां उपयोगकर्ता को उत्पादों की एक सूची मिलती है, और कई उत्पादों का चयन कर सकते हैं और सक्रिय या निष्क्रिय कर सकते हैं।निहिरनेट - इकाई लोड किए बिना एकल फ़ील्ड अपडेट करें?

इस सूची का मॉडल अपरिवर्तनीय है, और मेरे पास एक भंडार है जो मॉडल की एक सूची लेता है जो उन्हें सभी को निष्क्रिय करना चाहिए।

मेरे पास एक और पूर्ण उत्पाद संपादन मॉडल है, लेकिन मुझे बस एक कॉलम बदलने के लिए उनमें से सैकड़ों लोड नहीं करना पड़ेगा।

मैं सत्र का उपयोग कर रहा हूं। CreateQuery, लेकिन क्या इसे लागू करने का एक बेहतर तरीका है?

उत्तर

31

एचक्यूएल जाने का रास्ता है।

Session.CreateQuery("update Product set Active = :active where id in (:ids)") 
     .SetParameter("active", active) 
     .SetParameterList("ids", listOfSelectedProductIds) 
     .ExecuteUpdate(); 
+3

क्या एचक्यूएल के बिना कोई रास्ता है? मैं इनलाइन प्रश्नों को लिखने के बजाय पहले से ही मैपिंग का उपयोग करना चाहता हूं, जो पहले स्थान पर ओआरएम के पीछे विचार था। –

+0

@ श्रीमती आपको एचक्यूएल के साथ क्या समस्या है? ओआरएम की स्थापत्य पसंद के साथ प्रश्नों को क्या करना है? इसके बजाय आप इसे कैसे करेंगे? –

+7

ओआरएम के मुख्य उद्देश्यों में से एक लेखन प्रश्नों से बचने के लिए है। आपका समाधान एक पैकेज में सभी विरोधी पैटर्न को जोड़ता है: 1) इनलाइन डीबी स्टेटमेंट; 2) एक विशाल अमूर्त परत का उपयोग - एनएच - अनिवार्य रूप से एक आसान एसक्यूएल कथन को कॉल करने के लिए - किसी भी अच्छे कारण के लिए और एक बड़ी लागत के साथ; 3) डेटा मॉडल मैपिंग का उपयोग नहीं कर रहा है। (कृपया अपराध न करें) –

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