मैं पहली बार इकाई फ्रेमवर्क का उपयोग कर रहा हूं और देखा है कि संस्थाएं वस्तु इकाई संग्रह लौटाती हैं।आप ऑब्जेक्ट सेट से कैसे क्वेरी करते हैं और उसी क्वेरी में एक संलग्न इकाई संग्रह फ़िल्टर करते हैं?
DBEntities db = new DBEntities();
db.Users; //Users is an ObjectSet<User>
User user = db.Users.Where(x => x.Username == "test").First(); //Is this getting executed in the SQL or in memory?
user.Posts; //Posts is an EntityCollection<Post>
Post post = user.Posts.Where(x => x.PostID == "123").First(); //Is this getting executed in the SQL or in memory?
ऑब्जेक्टसेट और EntityCollection दोनों IQueryable लागू करें? मुझे उम्मीद है कि वे ऐसा करते हैं कि मुझे पता है कि डेटा स्रोत पर प्रश्नों को निष्पादित किया जा रहा है, स्मृति में नहीं।
संपादित करें: तो स्पष्ट रूप से EntityCollection ऑब्जेक्टसेट करता है जबकि नहीं। क्या इसका मतलब है कि मैं इस कोड का उपयोग करना बेहतर होगा?
DBEntities db = new DBEntities();
User user = db.Users.Where(x => x.Username == "test").First(); //Is this getting executed in the SQL or in memory?
Post post = db.Posts.Where(x => (x.PostID == "123")&&(x.Username == user.Username)).First(); // Querying the object set instead of the entity collection.
इसके अलावा, ऑब्जेक्टसेट और EntityCollection के बीच क्या अंतर है? क्या वे समान नहीं होना चाहिए?
अग्रिम धन्यवाद!
संपादित करें: क्षमा करें, मैं इसके लिए नया हूं। मैं समझने की कोशिश कर रहा हूँ। संलग्न इकाई चयन आलसी लोड होते हैं, इसलिए यदि मैं उन्हें एक्सेस करता हूं तो स्मृति उनके साथ आबादी होती है। बल्कि मेरा आखिरी संपादन में की तरह वस्तु सेट करने के लिए दो querys कर की तुलना में, मैं उत्सुक हूँ अगर इस क्वेरी अधिक के बाद मैं क्या था होगा:
DBEntities db = new DBEntities();
User user = (from x in db.Users
from y in x.Posts
where x.Username == "test"
where y.PostID == 123
select x).First();
कोई भी जो इसका उत्तर देता है उसे यह करना होगा कि आपको यह प्रश्न पोस्ट करने के बजाय क्या करना चाहिए था। युक्ति, एफ 12 आपको संपत्ति की परिभाषा पर ले जाएगा जब कर्सर संपत्ति के नाम पर है और जब कर्सर प्रकार पर है। – Brian
आपको एक स्मार्टस होने की जरूरत नहीं है। – Chev