2014-07-18 5 views
6

में क्वेरीओवर में उपयोग या क्लॉज का उपयोग करें मैं निबर्ननेट का उपयोग कर रहा हूं। मैं क्वेरीओवर विधि के माध्यम से क्वेरी लिख रहा हूं। मैं नीचे कोड में लिखने और खंड करने में सक्षम हूं। यह ठीक काम कर रहा है।NHibernate

db.QueryOver(Of Users)() 
    .Where(Function(x) x.Role = "Guest") 
    .And(Function(x) x.Block = 0) 
    .And(Function(x) x.APPID = appId) 
    .List(); 

लेकिन मैं Or बजाय खंड And, या दोनों के संयोजन का उपयोग करना चाहते। मैं इसे कैसे कार्यान्वित कर सकता हूं। धन्यवाद

उत्तर

17

यहाँ वर्णन है कि हम कैसे तैयार करते हैं या NHiberante साथ कर सकते हैं

वाक्य रचना (सी # में टैग का कहना है के रूप में) है:

  • Restrictions.Or(restriction1, restriction1)
  • Restrictions.Disjunction().Add(restriction1).Add(restriction2).Add(...

इस मामले में, यह इस तरह (फिर से सी # में, सवाल वीबी उपयोग करने के लिए लगता है, जबकि) हो सकता है:

db.QueryOver<Users>()() 
    .Where((x) => x.Role == "Guest") 
    .And(Restrictions.Or(
     Restrictions.Where<Users>((x) => x.Block == 0) 
    , Restrictions.Where<Users>((x) => x.APPID == appId) 
)) 
    .List<Users>(); 
+2

यह Restrictions.Where बजाय Restrictions.On नहीं होना चाहिए? – Rashack

+0

@Rashack, धन्यवाद, आप सही हैं, 'प्रतिबंध' के बजाय 'प्रतिबंध'। वहाँ ' –