2013-11-25 10 views
5

Sto implementando le migrazioni basate su codice Entity Framework (v5) per il mio progetto.Entity Framework Code Prime migrazioni: scaricare script sql a livello di codice

Gli amministratori db dei nostri clienti sono a volte un po 'paranoici e vogliono eseguire gli script sql a mano.

Dal momento che abbiamo avuto già molte versioni e sosteniamo SqlServer e Oracle parallelo, non vogliamo amministrare diversi script di aggiornamento di tutte le versioni possibili x.x.x.x a y.y.y.y. Non è possibile ottenere a livello di codice lo script SQL nello stesso modo come lo chiamo io nella console di Package Manager

Update-Database -Script 

Così il cliente otterrebbe tramite una semplice applicazione console in funzione il suo sistema di db e la versione corrente della corretta sql script come output. più

+0

cosa o dove sia il problema per me non è chiaro? –

+0

Posso chiamare 'Update-Database' dalla mia console di Visual Studio, ma mi piacerebbe chiamarlo tramite il codice sorgente. Quindi il client può eseguire una piccola applicazione che genera sql in modo dinamico. – StefanG

+0

È necessario che DBMigrator ti faccia un esempio. –

risposta

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(); 

informazioni: http://weblogs.asp.net/fredriknormen/archive/2012/02/15/using-entity-framework-4-3-database-migration-for-any-project.aspx


Fondamentalmente è necessario

DbMigrator db = new DbMigrator(HERE CONNECTION STRING); 
db.Update(HERE TARGET VERSION); 
Problemi correlati