2011-03-21 11 views
14

मैं अपने Global.asax में निम्न कोड का उपयोग करें:एफई CodeFirst: DropCreateDatabaseIfModelChanges काम नहीं करता है

DbDatabase.SetInitializer<MyDBContext> 
    (new DropCreateDatabaseIfModelChanges<MyDBContext>()); 

लेकिन यह काम करने के लिए प्रतीत नहीं होता।

हालांकि मेरी मॉडल बदल गया है और मैं से एक का उपयोग करने के लिए कोशिश कर रहा हूँ नए जोड़े तालिका यह सिर्फ कहते हैं तालिका नहीं पाया जा सका।

Invalid object name 'dbo.TableName'. 

यदि मैं यह तथापि चलाने के लिए, यह काम करने लगता है, और टेबल बनाया जा रहा है:

DbDatabase.SetInitializer<MyDBContext>(new DropCreateDatabaseAlways<MyDBContext>()); 

यह मेरी डेटाबेस को अद्यतन करता है।

मैं गलत क्या कर यह कर रहा है?

+0

क्या आपने सम्मेलनों को संशोधित किया? –

+0

नहीं मेरा मतलब है मेटाडेटा कन्वेंशन शामिल करें। क्या आपने इसे हटा दिया? क्या आपके पास आपके डीबी में एडमेटाटाटा टेबल है? –

+0

बीटीडब्ल्यू। "मॉडल" और "टेबल" से आपका क्या मतलब है? –

उत्तर

8

यह पता चला मास्टर डेटाबेस पर उपयोगकर्ता अनुमतियों किया जाना है। अजीब बात है कि DropCreateDatabaseAlways का उपयोग मास्टर डेटाबेस पर अनुमतियों की आवश्यकता नहीं है, जहां IfModelChanges करता है। , डेटाबेस पहले से ही अस्तित्व में था जब मैं कोड के ऊपर लाइन जोड़ा

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

मेरे मामले में:

+0

पुनर्निर्माण किए बिना साइट पर नेविगेट करें लेकिन क्या इसे देखने की आवश्यकता नहीं है अपने डेटाबेसबेस जांचने के लिए मास्टर डेटाबेस में? जहां हमेशा हमेशा ड्रॉप होता है, उसे मास्टर डेटाबेस में किसी भी झांक की आवश्यकता नहीं होती है। मास्टर डेटाबेस को सिस्टमोबजेक्ट्स रखने के लिए उपयोग किया जाता है लेकिन यह संसाधन डेटाबेस में नए संस्करण में है (संसाधन डेटाबेस और http://technet.microsoft के बारे में http://technet.microsoft.com/en-us/library/ms190940.aspx देखें मास्टर डेटाबेस के बारे में .com/en-us/लाइब्रेरी/ms187837.aspx) –

1

यह व्यवहार के मामले में की उम्मीद है आप IncludeMetadataConvention हटाया: modelBuilder.Conventions.Remove<System.Data.Entity.Database.IncludeMetadataConvention>();

+0

उस मामले में ऐसा होगा, लेकिन ऐसा नहीं है। – reinder

10

क्या इसके लायक है के लिए, मैं DropCreate रणनीतियों क्योंकि कैसिनी के बाद भी मैं ब्राउज़र बंद चल रहा था के दोनों के साथ परेशानी का एक बहुत में भाग । (मैं आईआईएस एक्सप्रेस के साथ एक ही समस्या थी।) क्योंकि स्थानीय वेब सर्वर अभी भी चल रहा था, Application_Start फिर से आग नहीं किया, इसलिए प्रारंभ मैं वहाँ डाल नहीं मिला मार डाला।

प्रोजेक्ट के गुण>वेब>Debuggers>संपादित सक्षम करें और जारी रखें

यह स्थानीय वेब सर्वर बलों को बंद करने के लिए जब:

मैं संपादित करें और जारी रखें को सक्षम करने से इसका समाधान नहीं होता ब्राउज़र बंद हो जाता है।

+1

मैं इसे कैसिनी के साथ एक एमवीसी 3 ऐप में उपयोग कर रहा हूं। मुझे लगता है कि अगर मैं अपने मॉडल वर्गों को संशोधित करने और फिर से चलाने से पहले अपने समाधान का पुनर्निर्माण करता हूं, तो बूंद/निर्माण इसकी नौकरी करता है। –

+0

यदि आप डिबग किए बिना डीबग या रन मार रहे हैं तो यह आमतौर पर विजुअल स्टूडियो में डिफ़ॉल्ट कार्रवाई होती है, केवल यही कारण है कि मैं यह देख सकता हूं कि यदि आप कोड को संशोधित करते हैं तो बस –

4

मैं के साथ एक ही मुद्दा था। मैंने डीबी गिरा दिया और फिर से अपना कार्यक्रम चलाया और यह उम्मीद के अनुसार काम करना शुरू कर दिया। केवल अन्य संघर्ष ही कारण हो सकता है कि मैं डेटाबेस पर 'सक्षम-माइग्रेशन' के साथ खेल रहा था।

एचटीएच

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