जब मैं अपना एप्लिकेशन डीबग करता हूं तो यह विधि डीबीकॉन्टेक्स्ट के कन्स्ट्रक्टर संदर्भ में निष्पादित नहीं होती है। तो जब इसे कहा जाता है तो?ईएफ 4.1 कोड फर्स्ट - ऑनमोडेल क्रिएटिंग कॉल टाइम
उत्तर
इस विधि को तब कहा जाता है जब ईएफ को पहली बार डेटाबेस तक पहुंचने की आवश्यकता होती है (इसलिए यह संदर्भ इंस्टेंसिंग के दौरान नहीं है)। यदि डेटाबेस मौजूद नहीं है तो यह संकलित मॉडल से इसे बनाने के लिए जानकारी का उपयोग करता है। मॉडल प्रति एप्लिकेशन केवल एक बार बनाया जाता है (यह आंतरिक रूप से कैश किया जाता है) ताकि यदि आप संदर्भ का निपटान करते हैं तो भी आपका मॉडल अगले उदाहरण के लिए पुन: उपयोग किया जाएगा।
ऑनमोडेल क्रिएटिंग ट्रिगर्स जब ईएफ 4 डेटाबेस बना रहा है। आम तौर पर इस घटना का उपयोग ईएफ 4 डेटाबेस को उत्पन्न करने के तरीके को कॉन्फ़िगर करने के लिए किया जाता है, इसलिए यदि आपने पहले अपना आवेदन निष्पादित किया है और आपका मॉडल वही रहता है, तो डेटाबेस पहले से ही वहां है और ईएफ 4 एक नया उत्पन्न करने की कोशिश नहीं करता है (हालांकि यह व्यवहार भी इस पर निर्भर करता है कुछ विन्यास पैरामीटर)।
स्पष्ट होने के लिए, OnModelCreating के पास कुछ भी नहीं है कि ईएफ आपके लिए डेटाबेस बना रहा हो या नहीं।
डेटाबेस के साथ संवाद करने के लिए, इकाई फ्रेमवर्क को उन इकाइयों का एक मॉडल बनाना चाहिए जो जारी रहेगा। यदि यह पहले से ही उस मॉडल को बनाया और कैश नहीं किया गया है, तो यह घटना आग लगती है।
के बाद मॉडल बनाया गया है, एक हैश इसे से उत्पन्न होता है, और एफई तो डेटाबेस से कनेक्ट करने के लिए करता है, तो (क) यह मौजूद है देखने के लिए प्रयास करता है, (ख) यह संस्करण जानकारी, पिछले एक हैश में संग्रहीत होता है एडमेटाटाटा टेबल, और (सी) क्या हैश मॉडल से पहले गणना की गई है या नहीं।
यदि हैश मेल नहीं खाते हैं, तो ईएफ डेटाबेस प्रारंभकर्ता का उपयोग करता है जिसे सेट किया गया है (Database.SetInitializer(new SomeInitializerType()
पर कॉल करके), जो आपके डेटाबेस को छोड़ या बना सकता है या नहीं। डिफ़ॉल्ट प्रारंभकर्ता, जब आप एक अलग निर्दिष्ट नहीं करते हैं, तो आपके डेटाबेस के लिए कुछ भी नहीं करता है, और एक बार यह चलने के बाद, इकाई फ्रेमवर्क डेटाबेस से बातचीत करने से इनकार कर देगा अगर यह सिंक हो गया है।
यदि आपके डेटाबेस में हैश के साथ एडमेटाडेटा तालिका नहीं है, तो एंटीटी फ्रेमवर्क मानता है कि आप डेटाबेस स्कीमा को अपने आप प्रबंधित कर रहे हैं और खुशी से यह सुनिश्चित करने का प्रयास करते हैं कि आप सही चीजें प्राप्त कर चुके हैं। यदि स्कीमा बाद में सड़क पर ईएफ की उम्मीदों से मेल नहीं खाती है, तो SaveChanges() और ऐसे को कॉल करते समय आपको त्रुटियां मिलेंगी।
इन सभी परिदृश्यों में, चाहे आप अपना खुद का डेटाबेस स्कीमा प्रबंधित कर रहे हों या ईएफ ड्रॉप छोड़ दें और इसे आवश्यकतानुसार फिर से बनाएं, चाहे डेटाबेस आपके मॉडल के साथ सिंक हो या नहीं, ऑनमोडेल क्रिएटिंग इवेंट पहली बार इकाई फ्रेमवर्क यह जानने की जरूरत है कि यह क्या चल रहा है।
- 1. ईएफ 4.1 ऑनमोडेल क्रिएटिंग को
- 2. कस्टम एसक्यूएल फ़ंक्शंस और कोड फर्स्ट (ईएफ 4.1)
- 3. ईएफ 4.1 पर एमवीसीमिनीप्रोफाइलर कोड-फर्स्ट प्रोजेक्ट एसक्यूएल
- 4. ईएफ 4.1 अपडेट 1 कोड फर्स्ट + एएसपी.नेट सदस्यता प्रदाता
- 5. ईएफ 4 कोड-प्रथम में ऑनमोडेल क्रिएटिंग का उद्देश्य क्या है?
- 6. ईएफ कोड-फर्स्ट डीबीकॉन्टेक्स्ट क्लास
- 7. ईएफ 4.1 कोड पहले - कॉलम
- 8. ऑनमोडेल क्रिएटिंग और गैर स्वचालित माइग्रेशन कैसे संबंधित हैं?
- 9. ईएफ 4 "कोड फर्स्ट" और रिपोजिटरी
- 10. ईएफ 4.1 कोड पहला: आउटपुट पैरामीटर
- 11. ईएफ 4.1
- 12. एनएचबीर्नेट बनाम ईएफ 4.1+
- 13. ईएफ (इकाई फ्रेमवर्क) 4.3 माइग्रेशन टूल ईएफ 4.1 डीबी
- 14. एडीओ ईएफ कोड फर्स्ट जेनेरिक इंटरमीडिएट क्लास विरासत मैपिंग
- 15. ईएफ 4.1 सीएफ: डेटा 'मास्टर'
- 16. ईएफ 4.1 - डीबीसीएन्टेक्स्ट एसक्ल्यूक्वियर और
- 17. ईएफ 4.1 कोड पहला - एकल संदर्भ या एकाधिक संदर्भ?
- 18. ईएफ 4.1 कोड प्राथमिक कॉम्प्लेक्स टाइप प्राथमिक कुंजी
- 19. ईएफ 4.1 कोड में संपत्ति प्रकार रूपांतरण कैसे करें पहले
- 20. ईएफ 4.1 कोड में एक्सएमएल डेटा टाइप पहले
- 21. ईएफ कोड पहला: फ्लुएंट एपीआई
- 22. हाउटो: एंटीटीफ्रेमवर्क और कोड-फर्स्ट
- 23. कोड-फर्स्ट माइग्रेशन
- 24. इकाई फ्रेमवर्क कोड फर्स्ट टेबल बहुवचन
- 25. एंटिटी फ्रेमवर्क कोड फर्स्ट मैपिंग
- 26. इकाई फ्रेमवर्क कोड-फर्स्ट - इस एंटीटी टाइप
- 27. इकाई फ्रेमवर्क 4.1 कोड-फर्स्ट और नए वन-टू-रिलेशन रिलेशनशिप
- 28. "ईएफ-कोड फर्स्ट" के साथ काम करते समय मैं कुंजी को कैसे परिभाषित करूं?
- 29. ईएफ कोड सबसे पहले उत्सुक लोडिंग
- 30. ईएफ 4.1 कोड प्रथम मॉडलबिल्डर हैरॉर्निइनके एक से एक रिश्तों के लिए
क्या यह कॉन्फ़िगरेशन हमेशा मेरे मामले में निष्पादित नहीं किया जाना चाहिए (मॉडल बदलते समय डीबी उत्पन्न नहीं होता है)? अन्यथा ईएफ कैसे कॉलम को मानचित्रित करने के बारे में जानेंगे? – rovsen
यदि डीबी उत्पन्न नहीं होता है, तो OnModelCreating ट्रिगर नहीं होगा। कोडफर्स्ट तरीके से, ईएफ सभी अनिर्दिष्ट मैपिंग के लिए सम्मेलनों का उपयोग करता है। एक बार डेटाबेस बनने के बाद, ईएफ प्रत्येक बार एप्लिकेशन निष्पादित होने पर मैपिंग को याद करता है। यदि आप एप्लिकेशन को विकसित करते समय अपने मॉडल में बदलाव कर रहे हैं, तो शायद आपको "AlwaysRecreateDatabase" विकल्प का उपयोग करना चाहिए, प्रत्येक बार जब आप अपना ऐप चलाते हैं तो डेटाबेस पुन: उत्पन्न हो जाएगा और ऑनमोडेल क्रिएटिंग हमेशा ट्रिगर होगा। –