मेरे पास एक एमवीसी 4 ऐप है जिसे मैंने हाल ही में एंटिटी फ्रेमवर्क 5 में अपग्रेड किया है और मैं विकास शैली से माइग्रेशन का उपयोग करने के लिए अपने डेटाबेस को स्थानांतरित करने की कोशिश कर रहा हूं छोड़ने और प्रत्येक रन बनाने के लिए।इकाई फ्रेमवर्क 5 माइग्रेशन: डेटाबेस का प्रारंभिक माइग्रेशन और एकल बीज सेट करना
यहां मैंने अपने ऐप स्टार्ट फ़ंक्शन में क्या किया है।
protected void Application_Start()
{
Database.SetInitializer(
new MigrateDatabaseToLatestVersion< MyContext, Configuration >());
...
}
मैं अपने खजाने परियोजना पर Enable-Migrations
आदेश भाग गया और मैंने सोचा कि यह एक आरंभिक माइग्रेशन फ़ाइल यह बनाया लेकिन केवल फ़ाइल बना सकेगी था Configuration
जब मैं डेटाबेस इसे बनाता है के माध्यम से अपेक्षित रूप से हटाना पहले कोड और कॉन्फ़िगरेशन फ़ाइल से डेटाबेस बीज। विन्यास फाइल में मैं AddOrUpdate()
लेकिन यह हर बार वेबसाइट शुरू होता है और डुप्लिकेट सभी बीज डेटा बार-बार मेरी Configuration
फ़ाइल में बीज समारोह चलाता है करने के लिए सभी Add()
कार्यों बदल दिया है।
मैं कल्पना की है कि यह एक initial migration
फ़ाइल के रूप में ब्लॉग मैंने पढ़ा सुझाव दिया है कि यह होता है और मैं वहाँ में बीज डेटा डाल सकता है पैदा करेगा लेकिन उसने ऐसा नहीं किया
किसी को कैसे मैं डीबी की स्थापना की जानी चाहिए व्याख्या कर सकते हैं कोड में ताकि यह केवल एक बार बीज हो?
LINK: The migrations blog post I followed
हालांकि यह एफई migrate.exe के बाद से माइग्रेशन चलाने के लिए roundhouse उपयोग करने के लिए बंद कर रहा है उपयोग करने के लिए काफी रोचक है। मैं अभी भी मॉडलों के आधार पर अपने माइग्रेशन को मचान करने के लिए ईएफ का उपयोग करता हूं लेकिन मैंने SQL फ़ाइलों में माइग्रेशन लिखने के लिए थोड़ा कंसोल ऐप लिखा था। मैं फिर अपने रेक निर्माण स्क्रिप्ट के माध्यम से माइग्रेशन करने के लिए राउंडहाउस का उपयोग करता हूं। इसमें थोड़ी अधिक प्रक्रिया शामिल है लेकिन एप्लिकेशन शुरू होने पर फ्लाई पर माइग्रेशन करने के लिए ईएफ का उपयोग करने से कहीं अधिक स्थिर है।
मैं अनुमान लगाता हूं कि यह हर बार चलता है क्योंकि वास्तव में वास्तविक माइग्रेशन में बीजिंग को लागू करने के बिना वे ऐसा कर सकते हैं। यदि आपका बीज कोड माइग्रेशन के ऊपर() के अंदर था, तो यह केवल एक बार चलाया जाएगा, और यह मेरे लिए अधिक सहज है, क्योंकि आमतौर पर आप कुछ डीबी परिवर्तन करते हैं और स्कीमा – FRoZeN
के इस नए हिस्से में कुछ डेटा बीज करना चाहते हैं आपके पास कोई भी माइग्रेशन नहीं है, इस विधि का उपयोग करके आपकी बीज विधि कभी नहीं चली जाएगी। मैं भी आजकल माइग्रेशन में बीजिंग करना पसंद करता हूं - इस तरह से मुझे पता है कि यह केवल एक बार चलाया जाएगा। – oldwizard
हाय पीसीआरयूआर। वास्तव में आपके पास हमेशा माइग्रेशन होता है क्योंकि प्रारंभिक डेटाबेस को माइग्रेशन माना जाता है, यानी यह डेटाबेस होने के लिए डेटाबेस से माइग्रेट करता है। हालांकि मैं प्रवासन में बीज रखने का लाभ देख सकता हूं। –