13

का उपयोग कर डेटाबेस टेबल मैप करते समय एंटीटी फ्रेमवर्क स्वचालित रूप से DbContext के ऑब्जेक्ट कॉन्टेक्स्ट का उपयोग क्यों करता है मैं पहले डेटाबेस दृष्टिकोण का अनुसरण कर रहा हूं; मैंने अपने SQL सर्वर 2008 डेटाबेस में टेबल बनाए हैं, फिर मैं उन तालिकाओं को एडीओ.NET इकाई डेटा मॉडल का उपयोग करके इकाई फ्रेमवर्क कक्षाओं में मैप करता हूं। लेकिन जब मैं designer.cs फाइल खोली मैं कक्षा परिभाषा में निम्न कोड स्वचालित रूप से बनाया गया था जिसमें पाया गया:एडीओ.NET इकाई डेटामैडेल

  1. क्यों:

    public partial class PortalEntities : ObjectContext 
    
    तो

    मैं तीन सवाल है कि मेरे भ्रमित हो निम्नलिखित है क्या मेरी PortalEntities कक्षा ObjectContext से प्राप्त हुई है और DbContext नहीं है जैसा कि मैं उम्मीद कर रहा था?

  2. वहाँ ObjectContext & DbContext के बीच एक बड़ा अंतर है, या वे मुख्य रूप से ही कर रहे हैं और प्रदान करते हैं कि एक ही क्षमताओं

  3. जब मैं निम्नलिखित कोड को कुछ इसी तरह लिखने की कोशिश:

    Student student = db.Students.Find(id); 
    

मुझे पता चला कि मैं .Find() विधि का उपयोग नहीं कर सकता क्योंकि मैं DbContext का उपयोग करता था, तो इसका मतलब यह है कि ObjectContext & DbContext के पास विभिन्न विधियां हैं जिनका मैं उपयोग कर सकता हूं?

बीआर

उत्तर

24

DbContextObjectContext जो बातें हम सबसे अधिक है के लिए इंटरफ़ेस को सरल के चारों ओर एक आवरण है।

आप एक DbContext है, तो आप अभी भी ObjectContext गर्त ((IObjectContextAdapter)dbContext).ObjectContext;

उपयोग कर सकते हैं आप जब पहली डेटाबेस का उपयोग कर ObjectContext के बजाय DbContext का उपयोग करना चाहते हैं, तो आप जो आपके कोड पैदा करने के लिए प्रयोग किया जाता है टेम्पलेट बदल सकते हैं। आप इसे अपने ईडीएमएक्स में राइट-क्लिक करके और 'कोड जनरेशन आइटम जोड़ें' चुनकर कर सकते हैं। फिर आप डीबीकॉन्टेक्स्ट टेम्पलेट का चयन कर सकते हैं।

Here is an example पूरी प्रक्रिया के।

+0

आपके उत्तर के लिए धन्यवाद; लेकिन क्या मुझे पहले अपने डेटाबेस एप्रेच में ऑब्जेक्ट कॉन्टेक्स्ट के बजाय डीबी कॉन्टेक्स्ट का उपयोग करने से फायदा होगा? –

+4

डीबीकॉन्टेक्स्ट में एक सरल इंटरफ़ेस है। इसका उपयोग करना आसान होगा और यदि आवश्यक हो तो आप इसे हमेशा ऑब्जेक्ट कॉन्टेक्स्ट पर डाल सकते हैं। यूनिट परीक्षण उद्देश्यों के लिए भी डीबीकॉन्टेक्स्ट मॉक करना आसान है। –

+0

स्पष्ट स्पष्टीकरण! धन्यवाद – GibboK

0

चूंकि वीएस2012 डिफ़ॉल्ट कोड पीढ़ी ObjectContext से DbContext में बदल गई है।

संबंधित मुद्दे