2012-03-26 5 views
18

Я создал новое приложение, использующее миграции базы данных Entity Framework 4.3. Миграции отлично работают с консолью диспетчера пакетов, используя команду «update-database».Запуск базы данных обновлений от Team City

Теперь я хочу запускать миграцию базы данных каждый раз, когда приложение создается с помощью Team City, похоже, что мне нужно создать сценарий powershell, который это сделает.

Может ли кто-нибудь указать мне некоторые инструкции о том, как заставить команды менеджера пакетов запускаться из командной строки или powershell? Все, что я могу найти, это инструкции о том, как это сделать с помощью консоли диспетчера пакетов, которые я не знаю, как работать с этапа сборки Team City.

+2

EF 4.3 содержит инструмент командной строки под названием 'migrate.exe', который предлагает такую ​​же функциональность, как' Update-Database'. –

ответ

18

migrate.exe - это то, что я искал, оно находится в «packages \ EntityFramework.4.3.1 \ tools».

Добавить новый шаг сборки в Team City с помощью:

Runner Тип: Командная строка

Command исполняемым: пакеты \ EntityFramework.4.3.1 \ Tools \ migrate.exe

Параметры команды: MyApplicationName/StartupDirectory: MyApplicationName \ bin

6

Установите Entity Framework nuget на репо и используйте прилагаемый файл migrate.exe в пакетах \ EntityFramework.5.0.0 \ tools \ или эквивалент.

Затем запустить пакетный скрипт так:

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 

Я ответил similar question и там я объясню, почему я до сих пор получить работу без указания файла веб/app.config.