2012-03-26 10 views
18

Ich habe eine neue Anwendung erstellt Entity Framework 4.3 Datenbank-Migrationen verwenden. Die Migrationen funktionieren hervorragend über die Paketmanagerkonsole mit dem Befehl "update-database".Lauf Update-Datenbank von Team-Stadt

Jetzt möchte ich die Datenbankmigrationen jedes Mal, wenn die Anwendung ausgeführt wird unter Verwendung von Team-Stadt gebaut, es sieht aus wie ich ein Powershell-Skript erstellen müssen, die dies tun wird.

Kann zeigen Sie mich jemand auf einige Anweisungen, wie die Paket-Manager erhalten Befehle von der Befehlszeile ausführen, oder Powershell? Alles, was ich finden kann, sind Anweisungen, wie diese über den Paketmanager-Konsole zu tun, die ich weiß nicht, wie von einem Team-Stadt-Build-Schritt auszuführen.

+2

EF 4.3 enthält Kommandozeilen-Tool namens 'migrate.exe' die gleiche Funktionalität wie' update-Database' bietet. –

Antwort

18

migrate.exe ist das, was ich gesucht habe, wird es in "Pakete \ EntityFramework.4.3.1 \ tools". mit

einen neuen Build Schritt in Team-Stadt hinzufügen:

Läufertyp: Kommandozeile

Befehl ausführbar: Pakete \ EntityFramework.4.3.1 \ tools \ migrate.exe

Befehlsparameter: MyApplicationName/StartupDirectory: MyApplicationName \ bin

6

Installieren Sie Entity Framework nuget in den Repo und verwenden Sie die begleitende migrate.exe unter packages \ EntityFramework.5.0.0 \ tools \ oder gleichwertig.

Dann ein Batch-Skript wie folgt ausführen:

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 

antwortete ich ein similar question und es ich erklären, warum ich noch, um es ohne Angabe einer Web/app.config-Datei zu erhalten arbeiten.