पुरानी पोस्ट के अनुसार अच्छा अभ्यास है और यह काफी हद तक विचार-आधारित है, लेकिन यहाँ से ऊपर नहीं उल्लेख किया एक और विचार है:
एक SingleOrDefault
खंड नहीं किया जा सकता Select
जैसे अन्य शब्दों के बाद, क्योंकि पटेल ऊपर बताते हैं, यह वास्तव में क्वेरी निष्पादित करता है। उदाहरण के लिए सड़क के नीचे कहते हैं कि तुम सिर्फ ग्राहक के नाम वापस जाने के लिए क्वेरी को संशोधित करना चाहते:
this.Storage.Customer.OfType<Preferred>()
.Include(b => b.Order)
.SingleOrDefault(cust => cust.Id == customerId && cust.CustomerType == (int)cusType)
.Select(cust=>cust.Name); //compile error
काम नहीं करेगा, और आप SingleOrDefault
से पहले करने के लिए Select
खंड स्थानांतरित नहीं कर सकते क्योंकि तब Id
और CustomerType
फ़ील्ड SingleOrDefault
में लैम्ब्डा अभिव्यक्ति के लिए दृश्यमान नहीं होंगे। इसके बजाय आप पहली बार वापस जोड़ने के लिए Where
खंड आवश्यकता होगी:, यह शायद अच्छा अभ्यास है हमेशा स्थिरता के लिए इसका इस्तेमाल करने के
this.Storage.Customer.OfType<Preferred>()
.Include(b => b.Order)
.Where(cust => cust.Id == customerId && cust.CustomerType == (int)cusType)
.Select(cust=>cust.Name)
.SingleOrDefault();
इस प्रकार क्योंकि Where
खंड अक्सर कम से कम के रूप में अच्छा प्रदर्शन जरूरी है और हमेशा की तरह, पठनीयता, और रखरखाव।
जेनरेटेड 'एसक्यूएल' क्वेरी वही होगी, इसलिए मैं कहूंगा कि यह आपकी राय है जो बेहतर है। – MarcinJuraszek
दूसरा छोटा है और अभी भी पढ़ने में आसान है। –
मुझे लगता है कि पहला चरण-दर-चरण कोड का पालन करता है और विस्तार/डीबग करना आसान है। –