Me falta algo básico.La migración de FluentMigrator tiene éxito, pero no hay cambios en DB
Estoy trabajando en un proyecto de legado, y estoy tratando de llevar FluentMigrator en la causa mezcla Tengo algo interesante base de datos cambios y migraciones de datos que suben que creo que será mucho más fácil mediante usando esta herramienta
Para la migración inicial, solo quiero llevar la base de datos a la versión de producción actual , tal como está. Para simplificar la migración inicial, programé mi base de datos SQL Server 2008, y la migración ejecuta los comandos con guiones como una serie de comandos SQL.
Para probarlo, se crea una base de datos completamente vacío, y tratar de ejecutarlo desde la línea de comandos usando la siguiente:
> migrate -a "C:\My\Project\Path\bin\debug\Rds.MyProjName.DBMigrations.dll"
-db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2008;Initial Catalog=myNewDbName;
Integrated Security=SSPI" -version=20100901000000
La versión especificada es la marca de tiempo en atributo de Migración la primera de la clase de migración.
En la línea de comandos, todo parece funcionar bien - la totalidad de la secuencia de comandos enfoca cerca, y termina con:
-- CreateProductionDbCircaSep2010: migrated
Sin embargo, cuando tomo un vistazo a la base de datos, que todavía está vacía . Absolutamente no hay nada allí. Hasta mi método es el siguiente:
public override void Up()
{
var cmds = LoadEmbeddedResources
.GetEmbeddedResource("scripted_db_2010-09-01.sql")
.AsString()
.ParseCommands();
foreach (var c in cmds) {
Execute.Sql(c);
}
CreateReferenceData();
}
(FYI, estoy analizar la secuencia de comandos en lugar de ejecutarlo como está porque empecé utilizando Migrator.Net antes de descubrir que estaba muerto, y esto ya era configurar.)
¿Alguien puede ayudarme? Casi parece como una transacción no es cometer, o alguna opción de línea de comando para tener la migración de hacer una carrera en seco está activada, pero yo no lo veo ...
EDIT: Adicional cosas que he intentado
Para confirmar que la cadena de conexión estaba usando la base de datos que esperaba, cambié el nombre de la base de datos y luego obtuve un error de inicio de sesión, como se esperaba.
Para más pruebas, me cortaron la longitud de la secuencia de comandos, e intentaron ejecutarlo utilizando
public override void Up()
{
Execute.Script(@"..\Resources\test.sql");
}
en lugar de comando por comando, pero me da los mismos resultados. Aquí está la salida en esa prueba (nota, he editado los pathes y tal):
C:\My\Project\Path\FluentMigrator.Net\ >migrate -a "C:\My\Project\Path\bin\debug
\My.Project.DBMigrations.dll" -db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2
008;Initial Catalog=myNewDbName;Integrated Security=SSPI" -version=2010090100000
0
Using Database SqlServer2008 and Connection String Data Source=.\SQLEXPRESS2008;
Initial Catalog=myNewDbName;Integrated Security=SSPI
-- VersionMigration: migrating ===============================================
-- CreateTable VersionInfo
-- VersionMigration: migrated
-- CreateProductionDbCircaSep2010: migrating =================================
-- ExecuteSqlScript C:\My\Project\Path\FluentMigrator.Net\..\Resources\test.sql
-- CreateProductionDbCircaSep2010: migrated
Sin embargo, no hay tablas en la base de datos - no hay ni siquiera la mesa VersionInfo esperado.
Voy a intentar montar un parche para el proyecto cuando tenga tiempo. –
+1 por enviar un parche –