2014-07-21 3 views
12

मैं संस्करण 6.1.1 के लिए एफई को अद्यतन करने के बाद निम्न त्रुटि में चल रहा हूँ:इकाई की रूपरेखा 6.1.1 अक्षम मॉडल संगतता जाँच

प्रकार 'System.InvalidOperationException' की एक बिना क्रिया का अपवाद EntityFramework.dll

में हुई

अतिरिक्त जानकारी: डेटाबेस बनाए जाने के बाद TvstContext संदर्भ का समर्थन करने वाला मॉडल बदल गया है। डेटाबेस अद्यतन करने के लिए कोड प्रथम माइग्रेशन का उपयोग करने पर विचार करें (http://go.microsoft.com/fwlink/?LinkId=238269)।

हम इस सवाल में वर्णित के रूप में अतीत में इसे ठीक कर सकते हैं: Where is modelBuilder.IncludeMetadataInDatabase in EF CTP5?

हालांकि, मैं त्रुटि से छुटकारा पाने के नहीं कर पा रहे।

+0

क्या आपने स्वचालित माइग्रेशन सक्षम किए हैं? या आप मैन्युअल माइग्रेशन का उपयोग कर रहे हैं? यदि बाद में, क्या आपने एक नया माइग्रेशन बनाने का प्रयास किया? – Johnny

उत्तर

44

यह काम करना चाहिए अपने व्युत्पन्न DbContext के निर्माता में कहीं रख दिया:

Database.SetInitializer<MyContext>(null); 
+1

यह उत्तर अधिक upvotes के लायक है! – ilter

+0

धन्यवाद। मुझे लगता है कि ईएफ को कुछ मामलों में मॉडल परिवर्तन ट्रैकिंग दूषित हो जाती है (उदाहरण के लिए सबसे अच्छा समाधान के लिए रिफैक्टरिंग के दौरान बहुत सारे मॉडल और माइग्रेशन परिवर्तन), और इसे ठीक करने का एकमात्र तरीका है मैन्युअल रूप से परिवर्तनों को वापस रोल करना और माइग्रेशन इतिहास तालिका से फंसे माइग्रेशन को हटाना। यह ईएफ मॉडल परिवर्तन ट्रैकिंग कभी-कभी वास्तव में परेशान हो सकती है। लैरवेल में माइग्रेशन है, लेकिन कोई मॉडल ट्रैकिंग नहीं है, और यह ठीक काम करता है। मुझे लगता है, यह मॉडल ट्रैकिंग के लिए कीमत है - अतिरिक्त जटिलता और मुद्दों जब आप ईएफ स्वचालित ट्रैकिंग के खिलाफ लड़ना चाहते हैं, तो कभी-कभी इसे पूरी तरह से बंद करना बेहतर होता है। – JustAMartin

+0

धन्यवाद। मुझे अपनी आवश्यकताओं के लिए ट्रैकिंग मॉडल परिवर्तन की आवश्यकता नहीं है। यह सिर्फ चाल है। – Miller

13

तुम भी Web.config फ़ाइल में सेट कर सकते हैं

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings>  
    <add key="DatabaseInitializerForType YourNamespace.YourDbContext, AssemblyName" 
      value="Disabled" /> 
    </appSettings> 
</configuration> 

निर्णय से: http://www.entityframeworktutorial.net/code-first/turn-off-database-initialization-in-code-first.aspx

+1

में कहीं और रखा है यह काम करता है और तर्कसंगत रूप से पसंदीदा है, क्योंकि कोई भी कोड परिवर्तन आवश्यक नहीं है और संगतता जांच पर्यावरण आदि के आधार पर चालू/बंद की जा सकती है। –

1

डब्बलर्न के उत्तरों पर विस्तार करने के लिए:

public ApplicationDbContext() 
     : base("DefaultConnection", throwIfV1Schema: false) 
    { 
     Database.SetInitializer<ApplicationDbContext>(null); 
    } 
संबंधित मुद्दे