2012-12-11 14 views
7

मैं एसक्यूएल Azure डेटाबेस के साथ अपने आवेदन में एफई माइग्रेशन उपयोग कर रहा हूँ के साथ नहीं बनाया। यह तब तक ठीक काम कर रहा था जब तक कि मैंने SQL Azure में मैन्युअल रूप से कोई तालिका नहीं छोड़ी। अब जब मैं अपना एप्लिकेशन प्रकाशित करता हूं तो ड्रॉप की गई तालिका SQL Azure में नहीं बनाई गई है। यह मुझे मिली त्रुटि है।एसक्यूएल Azure तालिका एफई माइग्रेशन

Cannot find the object "dbo.TableName" because it does not exist 
or you do not have permissions. 

मुझे लगता है कि मैंने डेटाबेस और मेरे मॉडल के बीच कुछ असंगतता बनाई है।

मैं स्वत: माइग्रेशन उपयोग कर रहा हूँ।

उत्तर

4

आपने टेबल को किस से शुरू करने के लिए हटा दिया? क्या आप इसे फिर से बनाया जाना चाहते हैं?

जटिल समाधान में इससे पहले कि हम मिल तुम सिर्फ एक है कि अपनी मेज उस में बनाने से पहले वापस प्रवास करने के रोल करने -TargetMigration विकल्प का उपयोग करने की कोशिश की है? मुझे एहसास है कि आपको एक टेबल या एफके की अनुक्रमणिका को हटाने की कोशिश करने के बारे में एसक्यूएल त्रुटियां मिलेंगी, लेकिन यह एक शॉट के लायक है। आप इस कमांड update-database -TargetMigration YourOldMigration का उपयोग कर ऐसा कर सकते हैं। यह आपके माइग्रेशन फ़ाइलों के डाउन() विधियों में पाए गए आदेशों को चलाकर आपके लक्षित माइग्रेशन के बाद लागू सभी माइग्रेशन को वापस लाएगा। यदि आपको SQL त्रुटियां मिल रही हैं तो आप त्रुटियों से बचने के लिए नीचे() विधियों को संशोधित करने का प्रयास कर सकते हैं। सावधान। इसका परिणाम डेटा हानि हो सकता है। यदि ईएफ आपको इसके बारे में चेतावनी देता है और आपको परवाह नहीं है। अपने आदेश को समाप्त करने के लिए फोर्स जोड़ने का प्रयास करें।

वैकल्पिक रूप से और साथ ही ....

आपका माइग्रेशन सिर्फ अपने dbcontext/मॉडलों के लिए अपने डाटाबेस योजना की तुलना द्वारा की गणना नहीं कर रहे हैं। यदि आप एसक्यूएल सर्वर प्रबंधन स्टूडियो में अपना एसक्यूएल एज़ूर डेटाबेस खोलते हैं तो आपको __ माइग्रेशन हिस्ट्री नामक एक टेबल दिखाई देनी चाहिए। यह स्वचालित माइग्रेशन के माध्यम से आपके डीबी पर लागू सभी माइग्रेशन स्टोर करता है।

कृपया शुरू करने से पहले के माध्यम से सभी तरह से पढ़ें। ऐसे कुछ कारक हैं जिन पर आप कूदने से पहले विचार करना चाहेंगे। मान लें कि आपने पहले से ही इसका उपयोग नहीं किया है, आपको मूल रूप से अपनी तालिका बनाने वाले परिवर्तन सेट के लिए एक पंक्ति मिलनी चाहिए। उस पंक्ति को हटाएं। अब ईएफ स्वचालित माइग्रेशन सोचेंगे कि उस बदलाव को अभी तक आपके डीबी पर लागू नहीं किया गया है। यदि आप अद्यतन-डेटाबेस चलाते हैं तो इसे इसे आजमाएं और फिर से चलाएं।

आपको लगता है कि माइग्रेशन फ़ाइल यह कोशिश करते हैं और करेंगे में अन्य परिवर्तन था उन्हें भी फिर से चलाने के। यह सभी प्रकार की एसक्यूएल त्रुटियों का कारण बन सकता है। आप शायद उन सभी परिवर्तनों को मैन्युअल रूप से रोल करना चाहते हैं जो उस माइग्रेशन का हिस्सा थे। डेटा हानि के बारे में चिंतित? डेटा समाप्त करने के बाद तक मैन्युअल रूप से बनाई गई तालिका में डेटा कॉपी करने का प्रयास करें। काम करने के लिए माइग्रेशन प्राप्त करने के बाद आप डेटा को अपनी नई टेबल/कॉलम में कॉपी कर सकते हैं।

डबल विकल्प। यदि आप विकास में बहुत दूर नहीं हैं और आपको डेटा हानि के बारे में बहुत अधिक चिंताएं नहीं हैं तो पूरे डेटाबेस को छोड़ना और स्वचालित माइग्रेशन को इसे स्क्रैच से फिर से बनाना आसान हो सकता है।

आशा है कि आप वहाँ हो जाता है

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