2011-05-03 15 views
8

मेरे ग्लोबल.एएसएक्स में मेरे पास निम्न पंक्ति है:ईएफ 4 कोड का उपयोग पहले: मैं डेटा खोए बिना मॉडल कैसे बदल सकता हूं

Database.SetInitializer<myDbSupport> 
    (new DropCreateDatabaseIfModelChanges<myDbSupport>()); 

अगर मेरे पास यह नहीं है, तो जब मैं मॉडल बदलता हूं, तो sdf डेटाबेस में सही संरचना नहीं होगी। यह एक देव वातावरण में ठीक है, लेकिन जब मैं उत्पादन में जाता हूं और डीबी संरचना अद्यतन चाहता हूं, तो निश्चित रूप से, तालिका को छोड़ने और डेटा खोने का जोखिम नहीं उठा सकता है।

क्या डीबी परिवर्तनों को स्क्रिप्ट करना संभव है, और परिवर्तित संरचना के साथ मॉडल को तैनात करने से पहले इस अद्यतन को चलाएं?

+0

मुझे वास्तव में आइडिया पसंद है, मुझे लगता है कि अब पाइथन और रूबी दुनिया में 'डीबी माइग्रेट' कमांड के साथ क्या हो रहा है, मुझे इसके बारे में निश्चित नहीं है! –

उत्तर

12

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

डेटाबेस अपग्रेड ऑपरेशन है जिसे अपग्रेड स्क्रिप्ट, इंस्टॉलेशन पैकेज या मैन्युअल अपग्रेड के हिस्से के रूप में अलग-अलग निष्पादित किया जाना चाहिए, न कि नए संस्करण के पहले अनुरोध के दौरान। कल I described migration

जो आप खोज रहे हैं वह कस्टम इंटियालाइज़र है जो मेरे लिंक किए गए उत्तर में बनाई गई बाहरी स्क्रिप्ट निष्पादित करेगा। यह आंशिक रूप से काम कर सकता है यदि आप बहुत सारे अतिरिक्त चेक शामिल करते हैं जो स्क्रिप्ट को दो बार चलाने से बचेंगे। पर क्यों? एक बार आपके पास एक स्क्रिप्ट हो जाने के बाद आप इसे पूरा करने के बाद इसे निष्पादित कर सकते हैं।

+1

हाय, प्रतिक्रिया के लिए धन्यवाद। मैं सहमत हूं, मैं नहीं चाहता कि डीबी स्वचालित रूप से अपडेट हो जाए। यही वह है जो मैं होने से रोकने की कोशिश कर रहा हूं। यदि मैं मैन्युअल रूप से प्रोड डीबी को अपने देव डीबी के समान ही अद्यतन करता हूं, तो क्या आप कह रहे हैं कि इसे अपेक्षा के अनुसार ही काम करना चाहिए? – JAG

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