¿hay alguna forma de ejecutar migraciones desde la propia aplicación?migratordotnet - Ejecuta migraciones desde dentro de la aplicación (sin construir o construir)
Gracias!
¿hay alguna forma de ejecutar migraciones desde la propia aplicación?migratordotnet - Ejecuta migraciones desde dentro de la aplicación (sin construir o construir)
Gracias!
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();
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);
}
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
Lo resolvió ... Con System.Reflection.Assembly.Load (...) – Lichtamberg
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. :) –