2013-11-25 10 views
5

प्राप्त करें मैं अपनी परियोजना के लिए एंटीटी फ्रेमवर्क (v5) कोड-आधारित माइग्रेशन लागू कर रहा हूं।इकाई फ्रेमवर्क कोड प्रथम माइग्रेशन: एसक्यूएल स्क्रिप्ट प्रोग्रामेटिक रूप से

हमारे ग्राहकों से डीबी व्यवस्थापक कभी-कभी थोड़ा सा परावर्तक होते हैं और एसक्यूएल स्क्रिप्ट को हाथ से निष्पादित करना चाहते हैं।

चूंकि हमारे पास पहले से ही कई संस्करण हैं और हम SQL सर्वर और ओरेकल समानांतर का समर्थन करते हैं, हम x.x.x.x से y.y.y.y. तक सभी संभावित संस्करणों से कई अद्यतन स्क्रिप्ट प्रबंधित नहीं करना चाहते हैं। यह उसी तरह से प्रोग्राम के रूप में एसक्यूएल स्क्रिप्ट प्राप्त करने के लिए के रूप में मैं यह पैकेज प्रबंधक कंसोल

Update-Database -Script 

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

+0

जरूरत है क्या या जहां है मेरे लिए समस्या यह स्पष्ट नहीं है? –

+0

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

+0

आपको इसके लिए एक डीबीमिग्रेटर की आवश्यकता है, मैं आपके लिए एक उदाहरण दूंगा। –

उत्तर

8
var configuration = new Configuration(); 
    var migrator = new DbMigrator(configuration); 

    var scriptor = new MigratorScriptingDecorator(migrator); 
    var script = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null); 
    Console.WriteLine(script); 

    migrator.Update(); 

    var pending = migrator.GetPendingMigrations(); 

अधिक जानकारी: http://weblogs.asp.net/fredriknormen/archive/2012/02/15/using-entity-framework-4-3-database-migration-for-any-project.aspx


मूल रूप से आप

DbMigrator db = new DbMigrator(HERE CONNECTION STRING); 
db.Update(HERE TARGET VERSION); 
संबंधित मुद्दे