我已使用count
构建定义为我的项目设置了持续集成。
在部署我的数据库(到Azure测试环境)时,我只使用正确的发布设置构建我的Visual Studio Online
。
但我想切换到SQL Server Database Project
的代码优先方法并利用迁移功能,这需要我调用migrate.exe。
我的问题是 - 如何从Entity Framework
构建定义运行migrate.exe?
答案 0 :(得分:8)
我们通过以下方式在TFS Build vNext的基础上成功实施了部署时的自动EF代码首次迁移:
它基本上涉及3个步骤(每个EF上下文):
详细说明:
MigrateEFContext.bat文件使用其参数组装migrate.exe命令:
SET EFDir=%1
SET EFContext=%2
SET connStringDataSource=%3
SET connStringInitialCatalog=%4
SET connectionProviderName=%5
%EFDIR%\migrate.exe %EFContext% /ConnectionString:"Data Source=%connStringDataSource%;Initial Catalog=%connStringInitialCatalog%;Integrated Security=true" /connectionProviderName:%connectionProviderName% /verbose
答案 1 :(得分:7)
我假设你正在使用vNext构建,添加一个" Nuget Installer"构建定义中的任务首先在构建期间还原实体框架。 Migrate.exe将安装在\ packages \ EntityFramework。\ tools文件夹中。然后添加一个"命令行"任务运行migrate.exe。输入“\ packages \ EntityFramework。\ tools \ migrate.exe"在"工具"区域和参数"参数"字段。
答案 2 :(得分:3)
您还可以查看在App启动时执行迁移。
将以下内容添加到global.asax
中的Application_Start()事件中var configuration = new Configuration();
var migrator = new DbMigrator(configuration);
migrator.Update();
这将在每次应用程序启动时触发迁移。你也可以用条件逻辑进行包装来控制它的触发方式。