Invece di aggiornare automaticamente DB, generare lo script SQL con fluente NHIBERNATE per l'ambiente di produzione
-
24-12-2019 - |
Domanda
Ho guardato durante la diversa documentazione, anche se non ha trovato nulla che si rivolga a questo. Sto cercando di usare fluentmigrator per progetti futuri, anche se per le pratiche di stadiazione / produzione devono fare aggiornamenti dello schema attraverso un DBA. Sono autorizzato a fare ciò che voglio per altri ambienti come test, dev e locali.
Lo scopo dello strumento è interamente sconfitto se devo scrivere gli script per eseguire comunque le modifiche. Tuttavia, mi è venuto in mente, cosa succede se non l'ho fatto? Quindi la mia domanda è questa: è possibile avere fluente migrare sputare uno script SQL a un file, invece di eseguire effettivamente la transazione?
Nella mia sperimentazione ho creato un'app console che utilizza lo stesso assemblaggio DAL come progetto principale e sfrutta la logica migrator, in modo che ogni volta che eseguo l'app console, aggiorna il DB da zero o dal punto più vicino a seconda a mia scelta. Usiamo TeamCity, quindi pensavo che potrebbe essere bello averlo fatto eseguire l'app e posizionare l'app e posizionare lo script (come artefatto) in una cartella come passo nel processo di costruzione per il nostro DBA negli ambienti che aggiornano lo schema da solo.
Soluzione
the fluentmigrator riga di comando runner genererà script SQL,Senza applicare le modifiche al database, se si utilizza:
- .
-
--preview=true
-
--output=true
-
--outputFilename=output1.sql
E, se si installa fluentmigrator.tools packable oltre al Pacchetto fluentmigrator , avrai accesso al runner della riga di comando dalla directory di output build del progetto di migrazione (Migrate.exe
).
Nota: Gli script generati conterranno inserti nella tabella della versione del fluentmigrator.
Altri suggerimenti
After reading Command Line Runner Options I'd use --verbose=true to output the sql script and --output to save it to a file. There seems to be no 'dry run' option however - you'll need to run the migration in some preproduction environment to obtain the script.
Give it a shot as I've admittedly never tried it.