2012-05-30 16 views
19

मैं EF4.3 प्रवासन सीख रहा हूँ, और मैं ado.net टीम ब्लॉग से इन दो लेख पढ़ा है:स्वचालित प्रवासन बनाम कोड आधार प्रवासन

http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx

http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx

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

धन्यवाद!

+3

मुझे नफरत है कि एमएस बस शब्दावली को कैसे लागू करता है। हम में से ऐसे लोग हैं जो सोचते हैं कि "कोड माइग्रेशन" का अर्थ है "एक भाषा/मंच से कोड को दूसरे में परिवर्तित करें" और "स्वचालित माइग्रेशन" का अर्थ है "कोड माइग्रेशन स्वचालित रूप से करें"। –

+0

@IraBaxter मुझे डीडीडी में बाउंड कॉन्टैक्स के विषय की याद दिलाता है। http://martinfowler.com/bliki/BoundedContext.html –

+0

लिंक अब और काम नहीं कर रहे हैं, क्या इस पर कोई अद्यतित लेख हैं? –

उत्तर

22

ये लेख बहुत स्पष्ट हैं इसलिए यदि आप अंतर को समझ नहीं पाते हैं तो इसका मतलब है कि आपने पाठ पढ़ने के दौरान ध्यान केंद्रित नहीं किया था और आप शायद उदाहरणों को कोड करके पाठ का पालन नहीं करते थे।

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

स्वचालित माइग्रेशन कभी-कभी पर्याप्त नहीं होते हैं। आपको माइग्रेशन कोड में कुछ अनुकूलन जोड़ने या डेटा को बदलने के लिए कुछ अतिरिक्त SQL कमांड चलाने की आवश्यकता है। ऐसे मामले में आप Add-Migration कमांड को कॉल करके स्पष्ट कोड आधारित माइग्रेशन जोड़ते हैं। स्पष्ट माइग्रेशन सभी माइग्रेशन कोड दिखाता है जो माइग्रेशन के दौरान निष्पादित किया जाएगा (कोई अतिरिक्त जादू नहीं है)।

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

+1

जब आप @ लद्दीस्लाव श्रीन्का कहते हैं, "स्वचालित माइग्रेशन कभी-कभी पर्याप्त नहीं होते हैं" क्या आप मुझे स्वचालित माइग्रेशन द्वारा नियंत्रित परिदृश्यों की एक सूची में इंगित कर सकते हैं? मैंने यह बयान इंटरनेट पर कई बार देखा है, यहां तक ​​कि आधिकारिक [ईएफ 5 दस्तावेज] (http://msdn.microsoft.com/en-US/data/jj554735) में भी, लेकिन दी गई सीमाओं की सूची कभी नहीं है। –

+2

@ स्टीवन: आपको कहीं भी सीमा की एक सूची नहीं मिलेगी। कभी-कभी आप उदाहरण के लिए परिवर्तन करते हैं, जिसमें केवल तालिका संरचना को बदलने की आवश्यकता नहीं होती है बल्कि डेटा को भी बदलने की आवश्यकता होती है - जिसके लिए कोड माइग्रेशन की आवश्यकता होती है जहां आप डेटा को मैन्युअल रूप से संभालते हैं। कभी-कभी आप कुछ और एसक्यूएल फीचर्स जोड़ना चाहते हैं - इंडेक्स, बाधाएं एटीसी। फिर कोड कोड माइग्रेशन के साथ ही संभव है। अधिकतर जब भी आपको 'एसक्यूएल' या 'CreateIndex' या' DropIndex' विधियों का उपयोग करने की आवश्यकता होती है, तो यह कोड माइग्रेशन के लिए कॉल करता है। –

+0

कुछ दिशानिर्देश प्रदान करने के लिए धन्यवाद। –

-2

MSDN पर आपके प्रश्न के बारे में अधिक जानकारी है। वे टीम विकास परिदृश्यों में स्वचालित और कोड आधारित माइग्रेशन मिश्रण करने की अनुशंसा नहीं करते हैं। लेकिन मुझे स्पष्ट रूप से समझ में नहीं आता कि यह कौन सी समस्याएं पैदा कर सकता है।

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