5

मैंने अपनी इकाई ढांचे के अनुप्रयोग के लिए माइग्रेशन सक्षम किए। अब, मैं अपने रिमोट सर्वर पर अपना डेटाबेस अपडेट करना चाहता हूं। मैंने यह आदेश चलाया:इकाई ढांचे और माइग्रेशन - रिमोट सर्वर पर अपना डेटाबेस कैसे अपडेट करें?

PM> Update-Database -Script 

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

मैं एसक्यूएल स्क्रिप्ट कैसे उत्पन्न कर सकता हूं, जिसमें केवल आवश्यक अपडेट होंगे?

उत्तर

7

आप इसके लिए एक विशिष्ट माइग्रेशन को लक्षित कर सकते हैं। यदि आपके पास फू नामक माइग्रेशन है, उदाहरण के लिए:

Update-Database -TargetMigration Foo -Script 

यह फ़ू माइग्रेशन के लिए माइग्रेशन स्क्रिप्ट उत्पन्न करेगा। उस सर्वर पर चलाने के लिए आपको जो भी माइग्रेशन की आवश्यकता है, उसके साथ Foo को बदलें।

Add-Migration InitialMigration 
Add-Migration AddCustomers 
Add-Migration AddProjects 

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

Update-Database -SourceMigration InitialMigration -TargetMigration AddProjects -Script 

यह रिमोट सर्वर (AddCustomers और AddProjects) पर दो माइग्रेशन लागू होगी।

+0

मैंने अभी अपने माइग्रेशन को सक्षम किया है, इसलिए मेरे पास कोई लक्षित माइग्रेशन नहीं है, क्या मुझे इसे पाने के लिए पहले अपने स्थानीय डीबी को अपडेट करने की ज़रूरत है? – ojek

+0

यदि आपके पास कोई माइग्रेशन नहीं है तो आप वास्तव में आवेदन करने की कोशिश कर रहे हैं? – Dismissile

+0

आपका संपादन स्पष्ट था। जानकारी के लिए धन्यवाद! :) – ojek

1

क्या आप कमांड लाइन माइग्रेशन टूल जो आम तौर पर [projectFolder] में पाया जाता है निष्पादित कर सकते हैं सर्वर के लिए दूरस्थ डेस्कटॉप के माध्यम से पहुँच है, तो /packages/EntityFramework.5.0.0/tools/migrate.exe

और इसे इस तरह कहते हैं:

Migrate.exe [StartupProjectName] /StartupDirectory:"[BIN folder path]" /ConnectionStringName:"[Connection String Name]" /StartupConfigurationFile:"[Path to web or app.config]" 
1

आप MigrateDatabaseToLatestVersion प्रारंभकर्ता इस्तेमाल कर सकते हैं स्वचालित रूप से किसी भी नए माइग्रेशन लागू करने के लिए जब आप अपने आवेदन का एक नया संस्करण को तैनात:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Configuration>()); 
संबंधित मुद्दे