5

लंबित हैं, इसलिए मेरे पास माइग्रेशन उत्पन्न करने का प्रयास करने में एक मूल समस्या है जब मेरे पास सिंक में डीबी नहीं है (नवीनतम माइग्रेशन तक, वास्तव में, कोई डीबी नहीं है) और पहले से ही मेरे मॉडल में काफी बदलाव किए हैं।एड-माइग्रेशन जबकि स्पष्ट माइग्रेशन

इस विशिष्ट विवरण हैं:

  1. स्पष्ट माइग्रेशन का एक क्रम है।
  2. कोई डेटाबेस नहीं है। संक्षेप में, लंबित परिवर्तनों में बहुत सारे हैं।
  3. मॉडल/संदर्भ में परिवर्तन किए गए।
  4. एड-माइग्रेशन करने का प्रयास करते समय, यह कहकर शिकायत करेगा कि स्पष्ट माइग्रेशन लंबित हैं।
  5. यदि मैं माइग्रेशन (और मेरे डीबी को सिंक में लाता हूं) को निष्पादित करने का प्रयास करता हूं, या तो अद्यतन-डेटाबेस या माइग्रेट.एक्सई के माध्यम से, यह विफल हो जाएगा (स्पष्ट माइग्रेशन सफलतापूर्वक लागू करने के बाद), और स्वचालित माइग्रेशन सक्षम नहीं हैं।
  6. मैं स्वत: माइग्रेशन या तो कि # 5 मैं यह कर सकते हैं में विफलता के बाद अब (किसी भी स्कीमा परिवर्तन के लिए प्रतिबद्ध होना करने के लिए रोकने के लिए और कोड में बेहिसाब जाने के लिए।)

मुझे पता है सक्षम करने के लिए नहीं करना चाहते हैं रन # 4। फिर # 5 और voilá पुनः प्रयास करें।

मेरा प्रश्न यह है कि अगर यह मूर्खतापूर्ण स्थिति को हल करने के लिए यह अपेक्षित दृष्टिकोण है।

+0

, तो आप कोई डीबी वर्तमान में है, तो आप सिर्फ माइग्रेशन फ़ोल्डर हटाना और 'dbCtx.Database.Delete() कॉल कर सकते हैं' पूरी बात अपने मॉडल से ताजा शुरू करने के लिए। – SimpleVar

+0

डेटाबेस के बिना आपको एकाधिक माइग्रेशन कैसे प्राप्त हुए? – Dismissile

+0

@ डिस्मिसाइल: हम _N_ devs की एक टीम हैं और हम में से कुछ स्थानीय डीबी हैं जो नवीनतम माइग्रेशन के पीछे हैं, जैसा कि मैंने ऊपर वर्णित किया है, देव को नवीनतम कोड मिल जाता है और माइग्रेशन लंबित चलाने के बिना मॉडल परिवर्तन करना शुरू कर देता है; यह एक ठेठ परिदृश्य है। एक और बात यह है कि देव ने कभी भी परियोजना पर काम नहीं किया है और अब पहली बार सभी कोड प्राप्त हो गए हैं। – fernandoespinosa

उत्तर

10

मैं निम्नलिखित दृष्टिकोण का उपयोग करूंगा।

सबसे पहले आपको माइग्रेशन लागू करने और अंतिम निर्दिष्ट करने की आवश्यकता है।

PM> Update-Database -TargetMigration AnyMigrationName 

# It updates database to a migration named "AnyMigrationName" 
# This will apply migrations if the target hasn't been applied or roll back migrations 
# if it has 

जब अपने स्थानीय डेटाबेस अद्यतन किया जाता है तो आप बस नया माइग्रेशन जोड़ें।

PM> Add-Migration NewMigrationName 

# it scaffolds a new migration named "NewMigrationName" 

एक अच्छा संदर्भ के लिए खोज रहे मैं EF Migrations के बारे में इन ब्लॉग पोस्ट है कि आप एक बहुत मदद कर सकते हैं पाया। वे विशेष रूप से कई प्रश्न और EF Migrations and a Merge Conflict और EF Migrations Command Reference को कवर करते हैं।

+1

साफ। समझ में आता है ... धन्यवाद! – fernandoespinosa

+0

यह मेरे लिए काम करता है। धन्यवाद – CB4

+1

एक ही समस्या थी, मेरा नया माइग्रेशन स्रोत नियंत्रण में जोड़ा नहीं गया था। बेवकूफी़ भरी गल्ती – Jeroen

0

यह त्रुटि तब दिखाई देती है जब आपके पास कई माइग्रेशन लंबित हैं।

यदि आपको मौजूदा माइग्रेशन की आवश्यकता नहीं है, तो पहले माइग्रेशन फ़ोल्डर पर सभी माइग्रेशन को हटाएं (बहिष्कृत करें) और फिर एक नया माइग्रेशन जोड़ें।

Add-Migration new

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