13

मैं सोच रहा था कि क्या मैं निरंतर एकीकरण के लिए पूरी तरह से पहले माइग्रेशन कोड स्वचालित कर सकता हूं।ईएफ कोड के साथ निरंतर एकीकरण प्रथम माइग्रेशन

वर्तमान में मेरी निरंतर एकीकरण बस बस कोड में परिवर्तन अद्यतन करता है, फिर भी, मैं मैन्युअल एक प्रवास उत्पन्न, और मेरे निरंतर एकीकरण सर्वर पर डेटाबेस को अद्यतन।

क्या यह माइग्रेशन उत्पन्न करने और डेटाबेस को स्वचालित रूप से अपडेट करने के लिए विश्वसनीय/संभव/अनुशंसित है?

उदाहरण के लिए:

मैं संपत्ति userId और उपयोगकर्ता नाम के साथ उपयोगकर्ता की है। मैं फिर कोड में एक संपत्ति उम्र जोड़ता हूं। वर्तमान परिदृश्य में मुझे माइग्रेशन बनाने की आवश्यकता होगी जो इस परिवर्तन को कैप्चर करेगा, और फिर मैं संस्करण नियंत्रण में अपने परिवर्तनों की जांच करता हूं। निरंतर एकीकरण इस परिवर्तन को खोजेगा, और नए संस्करण को तैनात करेगा। मुझे मैन्युअल रूप से अद्यतन करना है-डेटाबेस (जिसे स्वचालित किया जाना चाहिए)।

क्या मैं माइग्रेशन की पीढ़ी को भी छोड़ सकता हूं, जैसे कि मैं आसानी से कोड पर संपत्ति उम्र जोड़ सकता हूं, और निरंतर एकीकरण इस माइग्रेशन को उत्पन्न करेगा। सुनिश्चित नहीं है कि यह अनुशंसित है या नहीं।

उत्तर

0

निरंतर एकीकरण का हिस्सा भी खराब परिवर्तनों को वापस करने की संभावना है यदि वे परीक्षण पास नहीं करते हैं।

  • क्या आप अपनी डेटाबेस अपग्रेड स्क्रिप्ट को इस तरह से लिखते हैं कि उन्हें भी डाउनग्रेड किया जा सकता है?
  • क्या आप प्रत्येक प्रतिबद्धता के लिए कुछ सेव-पॉइंट या बैकअप बनाते हैं?
  • क्या आप खराब काम पर बैकअप/पुनर्स्थापना के मामले में डेटाबेस में डेटा खो देंगे?
  • डीडीएल में बुरा परिवर्तन क्या है?

कुछ ऐसे प्रश्न हैं जिन्हें आपको लागू करने से पहले आपको सोचना चाहिए।

4

उत्तर हाँ है, लेकिन आप इसका वर्णन नहीं कर रहे हैं।

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

आपका सीआई सर्वर तब आपके डेटाबेस को आपके मॉडल के साथ समन्वयित करने के लिए migrate.exe का लाभ उठा सकता है। मुश्किल हिस्सा माइग्रेशन को संभालने वाला है जिसके परिणामस्वरूप डाउनग्रेड होता है। तो v1 से v2 तक जा रहा है, लेकिन v2 से v1 तक trickier है क्योंकि केवल v2 असेंबली जानता है कि v1 को "back" कैसे प्राप्त करें।

मैंने एक कस्टम टूल तैयार किया जो माइग्रेशन को समझदारी से निष्पादित करता है और स्वचालित रूप से माइग्रेशन के लिए उपयोग करने के लिए कौन सा मॉडल (संदर्भ) असेंबली निर्धारित करता है। आप यहां यह कैसे कर सकते हैं कि यह कैसे करें: EF Code First Migrations to Deploy Older Version

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

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