I'am का उपयोग कर आवरण का उपयोग कर वास्तव में क्वेरी चलाने से पहले तालिका उपयोगकर्ता से कुछ डेटाLinq NHibernate आवरण मुद्दे पर जहां बयान
IQueryable<StarGuestWrapper> WhereQuery =
session.Linq<User>().Where(u => u.HomeClub.Id == clubId && u.IsActive).Select(
u =>
new StarGuestWrapper()
{
FullName = u.Name + " " + u.LastName,
LoginTime = u.SomeDateTime,
MonthsAsMember = u.SomeIntergerValue,
StarRating = u.SomeOtherInteregValue,
UserPicture = u.Photo.PhotoData,
InstructorFullName = u.SomeInstructorName,
TalkInteractionDuringSession = u.SomeBoolValue,
GoalInteractionDuringSession = u.SomeOtherBoolValue
});
मैं एक समस्या के बिना इस का उपयोग पाने के लिए के रूप में एक IQueryable तो मैं उपयोगी कर सकते हैं । पसंद:
WhereQuery.Skip(startRowIndex).Take(maximumRows).ToList();
और इसी तरह।
समस्या पर 'कहां' कथन का उपयोग करने में समस्या होती है। उदाहरण के लिए:
WhereQuery.Where(s => s.StarRating == 1)
क्रम कि 'StarRating' उपयोगकर्ता तालिका में मौजूद नहीं है में एक अपवाद फेंक देंगे - निश्चित रूप से ऐसा नहीं होता यह एक रैपर संपत्ति है। अगर मैं द्वारा
WhereQuery.AsEnumerable().Where(s => s.StarRating == 1)
क्वेरी अमल में लाना है, लेकिन फिर यह IQueryable का उपयोग कर के सभी Sens खो देता है यह काम करेंगे और मैं यह करने के लिए नहीं करना चाहती।
अजीब और रोचक क्या है कि रैपर से सभी गुणों को फेंकने में त्रुटि नहीं है, सभी बूल मानों का विवरण कहां में किया जा सकता है। उदाहरण:
WhereQuery.Where(s => s.TalkInteractionDuringSession)
यह EntityFramework में काम करता है, मैं क्यों NHibernate में इस त्रुटि मिलता है और यह कैसे तरह से मैं यह चाहता हूँ काम कर पाने के लिए?
डेटा स्टोर में मौजूद किसी चीज़ पर क्वेरी (जो डेटा स्टोर का उपयोग करता है) पर आप कैसे पूछना चाहते हैं? StarRating = 1 के साथ उन सभी को ढूंढने का एकमात्र तरीका सबकुछ पर गिनना है। –
@Lasse आपको यह समझने की प्रतीत नहीं होती है कि ओआरएम का काम कैसे होता है, यह एक क्वेरी नहीं है, यह एक डेटा नहीं है, इसमें डेटा शामिल नहीं है जो इस डेटा के लिए डेटाबेस से पूछताछ करता है। इस रैपर में हार्डकोड किए गए मानों को ध्यान में न रखें, यह केवल एक एक्सपेल है, मैंने आपको लिखा है। कुछ वैल्यू इसके बजाए। – Jacob
यह * एक नया परिणाम प्रकार बनाने से पहले एक प्रश्न था, उस बिंदु पर आप कनेक्शन को डेटा स्टोर पर वापस तोड़ते हैं, आपके चयन कथन का नतीजा अब एक क्वेरी करने योग्य नहीं है जिसे आप जोड़ना जारी रख सकते हैं। जहां खंड हैं। यह इस प्रकार के कोड के समान है: चुनें * से (जादू सी # कोड यहां से चुनें (अपने * से चुनें *) –