15

एफई (दृश्य स्टूडियो 2012) में कोड की पहली सुविधा को अक्षम करने के लिए कैसेएफई में कोड-पहली फीचर (MVC4 विजुअल स्टूडियो 2012) को अक्षम कैसे

मैं Visual Studio 2012 का उपयोग कर रहा, MVC4 (इंटरनेट अनुप्रयोग टेम्पलेट)।

मैं ईएफ का उपयोग करना चाहता हूं, लेकिन इसकी कोड-प्रथम सुविधा के साथ नहीं। मैं चाहता हूं कि मेरे कोड के आधार पर मेरे डेटाबेस को बनाने या संशोधित करने के बजाय एप्लिकेशन को त्रुटि हो। (मैं सिर्फ दृश्यों के पीछे अपने डेटाबेस की इस भावना के साथ नहीं रह सकता ... मैं चाहता हूं कि एप्लिकेशन ने सटीक डीबी का उपयोग किया हो ... और यदि कोई चीज बदलनी है, तो मैं यह मेरा स्वयं करें)

क्या यह नया एफ़ (वीएस2012) के साथ संभव है?

मैंने कई लोगों को यह पूछकर देखा है, लेकिन अब तक मैं जवाब नहीं ढूंढ पा रहा हूं।

उत्तर

23

आप कोड पहले का उपयोग करें और सुनिश्चित करें कि आपके डेटाबेस कभी नहीं अद्यतन या ओवरराइट हो जाता है जब आप null करने के लिए डेटाबेस प्रारंभकर्ता सेट करके अपने मॉडल बदल सकते हैं:

Database.SetInitializer<MyDbContext>(null); 

यह Database वर्ग के एक स्थिर विधि है और होना चाहिए आपके आवेदन की शुरुआत में कहा जाता है, उदाहरण के लिए global.asax में या आपके संदर्भ वर्ग के स्थिर निर्माता में। ऐसा करने से आपको मैन्युअल रूप से मॉडल क्लास और डेटाबेस स्कीमा बदलना होगा ताकि वे मेल खाते हों।

आप किसी मौजूदा डेटाबेस से कोड प्रथम मॉडल बनाने के लिए रिवर्स इंजीनियर सुविधा का भी उपयोग कर सकते हैं। सब के बारे में http://msdn.microsoft.com/en-us/data/jj206878

का अवलोकन: यह यहाँ समझाया गया है: http://msdn.microsoft.com/en-us/data/jj200620

या आप सब पर कोड पहले का उपयोग करें और एक मॉडल डिजाइनर आप डाटाबेस पहले दृष्टिकोण का उपयोग कर सकते हैं के साथ काम नहीं करना चाहते हैं, तो यहां बताए संभावित विकल्प यहां हैं: http://msdn.microsoft.com/en-us/data/ee712907.aspx

+1

धन्यवाद! मैं समझने की कोशिश कर रहा था कि क्यों कोड फर्स्ट काम नहीं कर रहा था, एक मौजूदा समाधान के माध्यम से पागल हो रहा था। और इस पोस्ट के बाद मुझे global.asax.cs में कोड का यह टुकड़ा मिलता है -> डेटाबेस .etInitializer (शून्य); – shake

+0

तो यहां मैं जो समझ नहीं पा रहा हूं: मेरे नियंत्रक में, मेरे पास संदर्भ वाला एक निजी क्षेत्र है। यह फ़ील्ड पैरामीटर रहित कन्स्ट्रक्टर के माध्यम से प्रारंभ हो जाता है, जिसमें उपर्युक्त रेखा होती है। इसके बाद, मुझे एक नियंत्रक विधि पर भेजा जाता है, जो क्रैश होता है जब ईएफ डेटाबेस को छोड़ने का प्रयास करता है। यह कैसे हो सकता है? क्या यह मेरे संदर्भ वर्ग के नाम के साथ एक स्ट्रिंग पैरामीटर के रूप में संदर्भ के लिए सुपर-कन्स्ट्रक्टर को कॉल कर रहा है। –