2012-08-25 16 views
7

का उपयोग किए बिना स्थानीय डीबी और ईएफ के साथ कैसे काम करें, मैं ईएफ 5 के साथ वीएस 2012 आरटीएम पर हूं। मैं पहले कोड कर रहा हूं, लेकिन कोड माइग्रेशन को अनदेखा करने की कोशिश कर रहा हूं क्योंकि मैं अभी विकास में हूं। उन्हें बचने के लिए, मैं इस समय-समय पर सेटमाइग्रेशन

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SomeContext>()); 

है, तब भी जब मुझे नहीं लगता कि मैं मॉडल को छुआ गया है, इसे पुन: का फैसला किया। कोई बात नहीं। लेकिन आमतौर पर त्रुटि

डेटाबेस ड्रॉप नहीं कर सकता क्योंकि यह वर्तमान में उपयोग में है।

इसलिए मैंने डेटाबेस को पूरी तरह से हटाने का निर्णय लिया। मैं वीएस में जाता हूं, "एसक्यूएल सर्वर ऑब्जेक्ट एक्सप्लोरर" पर जाता हूं, डीबी ढूंढता हूं और इसे हटा देता हूं। अब मैं

फ़ाइल संलग्न नहीं कर सकते '{0}' डाटाबेस के रूप में '{1}'

मैं इस कल रात होती हैं और मैं बस के आसपास जब तक यह काम fiddled था (बंद पर अटक कर रहा हूँ नीचे कार्य, वीएस को पुनरारंभ करें, वेब.config, आदि में डीबी और फ़ाइल नामों को बदलें

तो सवाल 1) मैं इस राज्य से कैसे बाहर निकल सकता हूं?

लेकिन अधिक महत्वपूर्ण सवाल, मैं खुद को इस राज्य में कैसे आने से रोक सकता हूं?

+0

स्वचालित माइग्रेशन का उपयोग क्यों नहीं करें? जब आप उत्पादन में तैनात होते हैं तो आप किसी भी समय कॉन्फ़िगरेशन से डीबी इंटिलाइजेशन विधि को बदल सकते हैं। –

+0

[यह] (http://msdn.microsoft.com/en-us/data/jj554735) कुछ कारण बताता है कि मैं स्वचालित माइग्रेशन का उपयोग क्यों नहीं करना चाहता हूं। साथ ही, यह आपको तब तक प्राप्त करता है जब तक आपको कोड आधारित माइग्रेशन का उपयोग शुरू करने की आवश्यकता नहीं है। –

+0

मुझे एक ही समस्या का सामना करना पड़ रहा है क्या आपको समाधान मिला? – Shimmy

उत्तर

5

मुझे एक ही समस्या थी और इसे ठीक करने में कामयाब रहा। मुख्य समस्या यह है कि ईएफ स्वचालित रूप से डेटाबेस नहीं बनायेगा। समाधान बहुत कठिन नहीं है।

सबसे पहले, समाधान एक्सप्लोरर पर जाएं और मैन्युअल रूप से डेटाबेस बनाएं। ऐसा करने के लिए, उस फ़ोल्डर पर जाएं जहां आपका डेटाबेस स्थित है (आमतौर पर App_Data)। इस फ़ोल्डर पर राइट-क्लिक करें और पर क्लिक करें -> नया आइटमडेटा टैब का चयन करें और SQL सर्वर डेटाबेस का चयन करें। सुनिश्चित करें कि आप एंटीटी फ्रेमवर्क अपेक्षाएं दर्ज करें (जो Cannot attach the file '{0}' as database '{1}' त्रुटि संदेश में निर्दिष्ट है)।

तो सबसे अधिक संभावना है कि आपको एक त्रुटि संदेश मिलेगा जो कहता है कि डेटाबेस में कोई मॉडल मेटाडेटा नहीं है। इस नाकाम करने के लिए, करने के लिए अपने डेटाबेस initialisation बदलने के लिए:

Database.SetInitializer(new DropCreateDatabaseAlways<SomeContext>()); 

अब आवेदन चलाने के लिए और डेटाबेस तालिकाओं सही तरीके से बनाए साथ होना चाहिए।

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SomeContext>()); 
+2

जानकारी के लिए धन्यवाद, यह मददगार था। – Form

+1

वास्तव में सहायक! –

6

एसक्यूएल सर्वर ऑब्जेक्ट एक्सप्लोरर खिड़की डेटाबेस से संबंध रख सकता है: एक बार इस चरण को सफलतापूर्वक क्रियान्वित किया गया है, तो आप अपने डेटाबेस प्रारंभकर्ता पर पूर्ववत बदल जाते हैं। खिड़की को बंद करना और इससे खोली गई सभी खिड़कियां कनेक्शन जारी करती हैं।

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