2014-04-01 7 views
5

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

मैं इन सभी को एक माइग्रेशन में पतन करना चाहता हूं और फिर से शुरू करना चाहता हूं। मेरी चिंताओं हैं:

  1. क्या यह संभव है या माइग्रेशन इतिहास को हटाए जाने पर माइग्रेशन इतिहास में समस्याएं पैदा होंगी?
  2. क्या यह करने के लिए वर्णन करने के आसपास कोई गाइड हैं?

उत्तर

5

पहला: मैं अनुशंसा करता हूं कि आप अपनी माइग्रेशन को एक अलग असेंबली में रखें ताकि उन्हें एप्लिकेशन के साथ प्रकाशित न हो। यह एक साधारण कंसोल ऐप हो सकता है जो माइग्रेशन या Winforms GUI लागू करता है जो स्क्रिप्ट उत्पन्न करता है। लेकिन ऐप आईएमओ के साथ इसे तैनात करने का कोई कारण नहीं है।

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

+0

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

+1

DbMigrations कॉन्फ़िगरेशन व्युत्पन्न कक्षा को बस आपके डीबीकॉन्टेक्स्ट को देखने में सक्षम होना चाहिए। इसके बारे में जाने के दो तरीके। आपके पास माइग्रेशन प्रोजेक्ट में एक अलग संदर्भ हो सकता है या आप अपने माइग्रेशन प्रोजेक्ट में अपनी डेटा परत का संदर्भ जोड़ सकते हैं ताकि यह वहां संदर्भ देख सके। मैं जो दृष्टिकोण लेता हूं वह है अपनी इकाइयों और इकाई मैपिंग कक्षाओं को अपनी अलग परियोजनाओं में रखना। मेरे माइग्रेशन प्रोजेक्ट में मेरे पास एक विशेष संदर्भ है जो किसी भी डीबीएससेट को परिभाषित नहीं करता है, यह गतिशील रूप से 'मॉडलबिल्डर' कॉन्फ़िगरेशन का उपयोग करके मेरी सभी इकाई मैपिंग कक्षाओं को गतिशील रूप से लोड करता है। AddFromAssembly() ' –

+0

मुझे वह अलगाव पसंद है जिसे आप साथ आए हैं। क्या यह अभी भी डेवलपर्स को कंसोल से एड-माइग्रेशन और सक्षम-माइग्रेशन का उपयोग करने की अनुमति देता है? –

0

सुनिश्चित नहीं हैं कि पिछले संस्करणों, लेकिन अगर आप यहां ईएफ कोर के लिए एक ही समाधान की तलाश में हैं। आपको मॉडल स्नैपशॉट को हटाने और क्लीन शीट बनाने के लिए अपने माइग्रेशन को फिर से चलाने में सक्षम होना चाहिए।

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