मैं एंटिटी फ्रेमवर्क की मूल बातें समझने की कोशिश कर रहा हूं और मेरे पास DbContext पर सेट <> विधि के बारे में कोई प्रश्न है। मैं निम्नलिखित प्रश्न के लिए डेटाबेस का पहला मॉडल उपयोग कर रहा हूं।इकाई फ्रेमवर्क: सेट का उपयोग कब करें <>
मान लें कि मेरे पास एक गतिविधि लॉज डेटाबेस है जो अन्य चीजों के साथ मैं एक संदेश खींचने के लिए उपयोग कर सकता हूं (उदाहरण के लिए एनएलओजी संदेश)।
using (var entities = new ActivityLogEntities())
foreach (var log in entities.AcitivityLogs)
Console.WriteLine(log.Message);
हालांकि मैं भी एक ही बात यह कर प्राप्त कर सकते थे:
using (var entities = new ActivityLogEntities())
foreach (var message in entities.Set<ActivityLog>().Select(entity => entity.Message))
Console.WriteLine(message);
मेरा प्रश्न इन दो बयानों के बीच अंतर क्या है मैं कुछ कोड इस तरह सभी संदेशों को बाहर निकलने के लिए लिख सकता है? एक दूसरे पर एक का उपयोग करने के लिए और अधिक उपयुक्त कब है? या यह सिर्फ व्यक्तिगत वरीयता का मामला है?
यदि आपके पास 'ActivityLogs' प्रॉपर्टी नहीं है, तो आप' ActivityLogs' प्रॉपर्टी का उपयोग नहीं कर सकते हैं। यह एक बेकार प्रतिक्रिया की तरह प्रतीत हो सकता है, लेकिन मेरे पास ऐसी स्थितियां थीं जहां मुझे एक प्रकार के लिए 'डीबीसेट' तक पहुंचने की आवश्यकता थी, जो जानबूझकर उस प्रकार की इकाइयों के लिए प्रत्यक्ष संपत्ति नहीं थी। लेकिन यह दोनों प्रश्नों के उत्तर देने के सवाल का उत्तर नहीं देता है। –
hvd
@ एचवीडी सहमत हो गया है लेकिन संदर्भ के संदर्भ में इसका बहुत दुर्लभ प्रकार है (और यह पूरी तरह से तुच्छ नहीं है) –
@LukeMcGregor 'सार्वजनिक कक्षा आदेश {सार्वजनिक आईसीओलेक्शन लाइन्स {प्राप्त करें; सेट; }} पब्लिक क्लास ऑर्डरलाइन {} पब्लिक क्लास संदर्भ {सार्वजनिक आईडीबीसेट ऑर्डर {प्राप्त करें; निजी सेट; }} '। इस काम को करने के लिए कोई अतिरिक्त काम करने की आवश्यकता नहीं है, और ऑर्डर के बिना 'ऑर्डरलाइन' तक पहुंचने में आमतौर पर इसका अर्थ नहीं होता है, तो मुझे संदर्भ स्तर पर 'ऑर्डरलाइन' संपत्ति क्यों जोड़नी चाहिए? –
hvd