2012-03-26 13 views
18

Ho creato una nuova applicazione utilizzando le migrazioni del database Entity Framework 4.3. Le migrazioni funzionano alla grande dalla console del gestore pacchetti usando il comando "update-database".Esecuzione del database di aggiornamento da Team City

Ora voglio eseguire le migrazioni del database ogni volta che l'applicazione viene creata utilizzando Team City, sembra che ho bisogno di creare uno script PowerShell che farà questo.

Qualcuno può indicarmi alcune istruzioni su come ottenere i comandi del gestore pacchetti da eseguire dalla riga di comando o da PowerShell? Tutto quello che posso trovare sono le istruzioni su come farlo attraverso la console del gestore di pacchetti, che non so come eseguire da un passaggio di costruzione di Team City.

+2

EF 4.3 contiene lo strumento della riga di comando denominato 'migrate.exe' che offre le stesse funzionalità di 'Update-Database'. –

risposta

18

migrate.exe è quello che stavo cercando, si trova in "packages \ EntityFramework.4.3.1 \ tools".

Aggiungi un nuovo passaggio di generazione in Team City usando:

Runner Tipo: riga di comando

eseguibile di comando: pacchetti \ EntityFramework.4.3.1 \ Tools \ Migrate.exe

Parametri di comando: MyApplicationName/StartupDirectory: MyApplicationName \ bin

6

Installare Entity Framework nuget sul repository e utilizzare il file migrate.exe di accompagnamento in pacchetti \ EntityFramework.5.0.0 \ tools \ o equivalente.

quindi eseguire script batch come questo:

SET AssemblyName=MyMvc4App 
SET StartUpDirectory=MyMvc4App\bin\ 
SET ConnectionString=Server=tcp:XXXX.database.windows.net,1433;Database=XXXX;User ID=XXXX;Password=XXXX;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True 
SET ConnectionStringProvider=System.Data.SqlClient 
SET ConfigFilePath=%CD%\MyMvc4App\web.config 
SET MigrateExe=packages\EntityFramework.5.0.0\tools\migrate.exe 

%MigrateExe% %AssemblyName%.dll /startUpDirectory:%StartUpDirectory% /startUpConfigurationFile:"%ConfigFilePath%" /connectionProviderName:"%ConnectionStringProvider%" /connectionString:"%ConnectionString%" /verbose 
pause 

ho risposto a una similar question e lì ho spiegare perché devo ancora farlo funzionare senza specificare un file web/app.config.

Problemi correlati