2012-05-02 10 views
23

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

क्या यह संभव है?

उत्तर

16

नहीं, यह संभव नहीं है। कॉन्फ़िगरेशन क्लास माइग्रेशन का हिस्सा नहीं है - यह माइग्रेशन माइग्रेशन को कार्यान्वित कर रहा है। आपके सभी माइग्रेशन के लिए आपके पास एकल कॉन्फ़िगरेशन क्लास है और इसकी माइग्रेशन रन के बाद Seed विधि निष्पादित की जाती है - आप बीजिंग डेटा के संदर्भ भी उपयोग कर सकते हैं और इसके कारण माइग्रेशन पूर्ण होने के बाद इस विधि को निष्पादित किया जाता है = यह माइग्रेशन का हिस्सा नहीं हो सकता है। माइग्रेशन क्लास की केवल सामग्री ही लिखी गई है।

+0

ठीक है, स्पष्टीकरण के लिए धन्यवाद। मुझे लगता है कि मैं इसके बजाय आवेषण को कैप्चर करने के लिए डेटा तुलना टूल का उपयोग कर सकता हूं। – Ian1971

+1

@ लाडिस्लाव, इस सटीक परिदृश्य में, डेटा-तुलना टूल का उपयोग करने का सही तरीका है, जैसा कि @ ian1971 द्वारा सुझाया गया है? या आपके पास स्थिर डेटा होगा, जैसे कि सभी देशों की सूची कहें, 'ऊपर() {'में' वर्ग()' कथन के रूप में जा रहे हैं ...} ' – bPratik

+1

@bPratik: यदि आप माइग्रेशन का उपयोग करना चाहते हैं तो' Sql' विधि –

3

मुझे पता है कि यह पुराना धागा है, लेकिन यहां एक ऐसा उत्तर है जो किसी और को उत्तर देने में मदद कर सकता है।

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

आप इस तरह एक अलग माइग्रेशन कॉन्फ़िग फ़ाइल में जगह कर सकते हैं आप एक विशिष्ट बीज विधि को चलाने के लिए की जरूरत है कि:

Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA 

कमान: NuGet में इसके लिए

Migrate.exe MyAssembly CustomConfig /startupConfigurationFile=”..\web.config” 

देखो निर्देशिका पैकेज : ".. \ packages \ EntityFramework.6.1.3 \ tools"

आप माइग्रेशन कॉन्फ़िगरेशन को इसके लिए तर्क के रूप में निर्दिष्ट कर सकते हैं। CustomConfig में आपके कोड आधारित बीज विधि होनी चाहिए। इसलिए, इस तरह आपको माइग्रेशन से उत्पन्न होने वाली SQL स्क्रिप्ट की आवश्यकता नहीं है।

अधिक यहाँ जानकारी:

http://www.eidias.com/blog/2014/10/13/initialcreate-migration-and-why-is-it-important

http://www.gitshah.com/2014/06/how-to-run-entity-framework-migrations.html

इस समाधान का उपयोग करके आप और एक SQL स्क्रिप्ट उत्पन्न करने के लिए की जरूरत नहीं है विभिन्न वातावरण के लिए कई बीज चला सकते हैं।

1) अपने डीबी प्रारंभकर्ता और बीज विधि द्वारा उत्पन्न एक साफ डेटाबेस से शुरू करें:

7

एक अन्य समाधान/वैकल्पिक हल SSMS आप के लिए स्क्रिप्ट उत्पन्न है। सुनिश्चित करें कि जिस डेटा को आप स्क्रिप्ट किया चाहते हैं वह वहां है।

2) एसएसएमएस का उपयोग करके, डेटाबेस पर राइट-क्लिक करें, कार्य> "स्क्रिप्ट जेनरेट करें ..." पर जाएं, और विज़ार्ड का पालन करें। उन्नत विकल्पों के तहत, "स्क्रिप्ट के लिए डेटा के प्रकार" के लिए "केवल डेटा" का चयन करना सुनिश्चित करें।

3) जेनरेट की गई स्क्रिप्ट से, अपनी लक्षित स्क्रिप्ट पर आवश्यक बीज स्टेटमेंट कॉपी करें।

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