2009-05-15 13 views

Respuesta

13

que se crea una instancia de la clase Migrator, y entonces usted puede llamar a métodos como miembros MigrateToLastVersion() o MigrateTo(long versionnr)

Migrator.Migrator m = new Migrator.Migrator ("SqlServer", connectionString, migrationsAssembly) 

m.MigrateToLastVersion(); 
+0

Lo siento, pero no lo consiguen ... Hice una clase-Projekt e hicieron todo como en los tutoriales. Luego hice un nuevo proyecto web e incluí el migration.dll y mi ensamblado compilado. Luego incluí su código fuente, pero ¿dónde puedo encontrar el conjunto de migración correcto? Solo encuentra mi espacio de nombres "DBMigration", pero aparece un mensaje de error "DBMigration es un espacio de nombres, pero se usa como un tipo". ¿Me puedes ayudar? – Lichtamberg

+0

Lo resolvió ... Con System.Reflection.Assembly.Load (...) – Lichtamberg

+0

Así es como debería hacerse. :) Cargue el archivo de ensamblaje que contiene sus migraciones en una instancia de Assembly y páselo a la clase Migrator. :) –

1

no veo por qué no.

Tener un vistazo a la tarea Nant http://code.google.com/p/migratordotnet/source/browse/trunk/src/Migrator.NAnt/MigrateTask.cs

Bits relevantes son aquí:

private void Execute(Assembly asm) 
    { 
     Migrator mig = new Migrator(Provider, ConnectionString, asm, Trace, new TaskLogger(this)); 
     mig.DryRun = DryRun; 
     if (ScriptChanges) 
     { 
      using (StreamWriter writer = new StreamWriter(ScriptFile)) 
      { 
       mig.Logger = new SqlScriptFileLogger(mig.Logger, writer); 
       RunMigration(mig); 
      } 
     } 
     else 
     { 
      RunMigration(mig); 
     } 
    } 

    private void RunMigration(Migrator mig) 
    { 
     if (mig.DryRun) 
      mig.Logger.Log("********** Dry run! Not actually applying changes. **********"); 

     if (_to == -1) 
      mig.MigrateToLastVersion(); 
     else 
      mig.MigrateTo(_to); 
    } 
Cuestiones relacionadas