2012-01-30 17 views
11

मैंने माइग्रेशन भलाई के लिए अभी ईएफ 4.3-बीटा 1 स्थापित किया है, और मैं इसे काम नहीं कर सकता। त्रुटि मैं:इकाई फ्रेमवर्क 4.3 माइग्रेशन त्रुटि

PM> Update-Database -Verbose 
Using NuGet project 'Project.Domain'. 
Using StartUp project 'ProjectWebSite'. 
System.InvalidOperationException: No migrations configuration type was found in the assembly 'Project.Domain'. 
    at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.FindConfiguration() 
    at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.GetMigrator() 
    at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() 
    at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run() 
No migrations configuration type was found in the assembly 'Project.Domain'. 

2 एफई वर्गों के लिए एक नया स्तंभ जोड़ दिया है:

public class MasterInstance 
{ 
    public int MasterInstanceId { get; set; } 
    [Required] public string HostName { get; set; } 
    [Required] public string Name { get; set; } /* <-- THIS IS NEW */ 
    [Required] public string ConnectionString { get; set; } 
    public virtual ICollection<MasterInstanceLocation> MasterInstanceLocations { get; set; } 
} 

और मेरे DbContext इस तरह दिखता है:

public class ProjectDontext: DbContext, IProjectContext 
{ 
    public IDbSet<Installer> Installers { get; set; } 
    public IDbSet<MasterInstance> MasterInstances { get; set; } 
    public IDbSet<MasterInstanceLocation> MasterInstanceLocations { get; set; } 
} 

कोई भी विचार? मेरा ईएफ वर्ग & संदर्भ एक अलग असेंबली (Project.Domain) में रहते हैं। मैंने मुख्य वेबसाइट और डोमेन प्रोजेक्ट दोनों के संदर्भ में अद्यतन-डेटाबेस चलाने का प्रयास किया है, और मुझे वही त्रुटि मिलती है।

- संपादित -

समाधान मिल गया। यह पता चला है कि आपको अपनी परियोजना के लिए माइग्रेशन सक्षम करने की आवश्यकता है। आप NuGet कंसोल में Enable-Migrations चलाकर ऐसा कर सकते हैं (सुनिश्चित करें कि आपके पास सही प्रोजेक्ट चुना गया है - मेरे लिए यह प्रोजेक्ट था .डोमेन प्रोजेक्ट)।

This walkthrough अधिक जानकारी

+1

आपका प्रश्न शीर्ष Google परिणाम है * असेंबली * में कोई माइग्रेशन कॉन्फ़िगरेशन प्रकार नहीं मिला था। यह बीटा सॉफ्टवेयर अभी भी वास्तव में नया है। मैं इसे एमएसडीएन मंचों पर भी पोस्ट करने की कोशिश करता हूं। – Yuck

+0

अच्छी कॉल - http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/39edecbf-267d-4e88-bad9-87c60f330d8a –

+0

क्या आपके पास प्रोजेक्ट के तहत माइग्रेशन फ़ोल्डर है। डोमेन –

उत्तर

14

समाधान पाया जा सकता है। यह पता चला है कि आपको अपनी परियोजना के लिए माइग्रेशन सक्षम करने की आवश्यकता है। आप NuGet कंसोल में Enable-Migrations चलाकर ऐसा कर सकते हैं (सुनिश्चित करें कि आपके पास सही प्रोजेक्ट चुना गया है - मेरे लिए यह प्रोजेक्ट था .डोमेन प्रोजेक्ट)।

This walkthrough अधिक जानकारी

+2

के रूप में चिह्नित करें> सुनिश्चित करें कि आपके पास सही परियोजना है यह मेरी समस्या थी। सुनिश्चित करें कि सही परियोजना का चयन किया गया है। –

4

कभी कभी प्रदान करता है, भले ही आप माइग्रेशन सक्षम किया है, इस समस्या हो सकती है। इसका मतलब है कि कॉन्फ़िगरेशन फ़ाइल हटा दी गई है। इस मामले में, आप पीएम कंसोल में सक्षम-माइग्रेशन-फोर्स चला सकते हैं। बल पैरामीटर माइग्रेशन कॉन्फ़िगरेशन फ़ाइल को ओवरराइड करना है।

1

यदि आप पहले ही माइग्रेशन सक्षम कर चुके हैं और कुछ विंडोज अपडेट के बाद इस त्रुटि को देखना शुरू कर दिया है, तो सुनिश्चित करें कि आप NuGet पैकेज मैनेजर का उपयोग करके सभी परियोजनाओं में एंटीटी फ्रेमवर्क के समान संस्करण का उपयोग कर रहे हैं।

हाल के विंडोज अपडेट्स ने आपके सक्रिय प्रोजेक्ट में एंटीटी फ्रेमवर्क का एक नया संस्करण स्थापित किया हो सकता है।

पृष्ठभूमि: लगभग 16 मार्च 2016, मैंने प्रोजेक्ट में माइग्रेशन जोड़ने की कोशिश करते समय "कोई माइग्रेशन कॉन्फ़िगरेशन प्रकार" त्रुटि प्राप्त करना शुरू किया जहां मैंने पहले से ही माइग्रेशन सक्षम कर लिया था और पहले सफलतापूर्वक माइग्रेशन किया था।

मैंने देखा कि 10 मार्च के आसपास, इकाई फ्रेमवर्क 6 का एक नया स्थिर संस्करण जारी किया गया था।

यदि मैंने सक्षम-माइग्रेशन कमांड में -ContextTypeName पैरामीटर निर्दिष्ट किया है, तो मुझे संकेत मिलता है कि माइग्रेशन पहले से सक्षम हैं।

समस्या निवारण के रूप में मुझे मिली एक और त्रुटि यह इंगित करती है कि कॉन्फ़िगरेशन प्रकार सिस्टम से विरासत में नहीं था। डेटा। एंटीटी.मोडेल कॉन्फ़िगरेशन। एंटीटी टाइप कॉन्फ़िगरेशन, भले ही यह था।

इससे मुझे विश्वास हुआ कि एंटीटी फ्रेमवर्क के विभिन्न संस्करण विरोधाभासी थे।

समाधान:

1) उपकरण -> Nuget पैकेज प्रबंधक -> समाधान

के लिए Nuget संकुल प्रबंधित

2) (सुनिश्चित नहीं करता है, तो यह चरण आवश्यक है, लेकिन ..) मैं की मेरी संस्करण अद्यतन नवीनतम संस्करण के लिए Nuget पैकेज प्रबंधक। इसके अलावा, Nuget पैकेज प्रबंधक के अपने संस्करण को अद्यतन करने के बाद, मुझे NuGet कमांड लाइन ठीक से काम करने से पहले दो बार विजुअल स्टूडियो को पुनरारंभ करना पड़ा।

3) उपकरण -> Nuget पैकेज प्रबंधक -> समाधान के लिए Nuget संकुल प्रबंधित करें -> खोज स्थापित पैकेज -> टाइप इकाई की रूपरेखा

एक। आप वहां इकाई फ्रेमवर्क के एक से अधिक संस्करण देख सकते हैं।

बी। इकाई फ्रेमवर्क के प्रत्येक संस्करण पर प्रबंधित करें पर क्लिक करें और सुनिश्चित करें कि आपकी परियोजनाएं इकाई फ्रेमवर्क के समान संस्करण का उपयोग कर रही हैं। • उस इकाई फ्रेमवर्क के संस्करण को अनचेक करें जिसका आप उपयोग नहीं कर रहे हैं और आप जिस इकाई फ्रेमवर्क का उपयोग कर रहे हैं उसके संस्करण के लिए यह सुनिश्चित कर लें कि यह आपकी परियोजनाओं में जांच की गई है, जिसकी आवश्यकता है।

फिर, जैसा कि चरण 2 में बताया गया है, मुझे NuGet पैकेज प्रबंधक कंसोल को NuGet पैकेज प्रबंधक के मेरे संस्करण को अद्यतन करने के बाद ठीक से काम करने के लिए दृश्य स्टूडियो को दो बार पुनरारंभ करना पड़ा। मुझे पहली बार कंसोल शुरू करने में त्रुटि मिली, और 8 तर्कों के साथ अपवाद कॉलिंग createinstance फ़ाइल या असेंबली EntityFramework लोड नहीं कर सका "सक्षम-माइग्रेशन कमांड को दूसरी बार चलाते समय।

दृश्य स्टूडियो को पुनरारंभ करना उन मुद्दों को हल करना प्रतीत होता था, हालांकि।

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