entity-framework - 如何从 Visual Studio Online 运行 Entity Framework 的 migrate.exe?

标签 entity-framework azure-devops

我已经使用 Visual Studio Online 为我的项目设置了持续集成构建定义。

在部署我的数据库(到 Azure 测试环境)时,我只是构建我的 SQL Server Database Project使用正确的发布设置。

但是我想切换到Entity Framework的代码优先方法并利用迁移功能,这需要我调用 migrate.exe。

我的问题是 - 我如何从 VSO 运行 migrate.exe建立定义?

最佳答案

我们已通过以下方式成功地在 TFS Build vNext 之上在部署时实现了自动化的 EF 代码首次迁移:

它基本上涉及 3 个步骤(每个 EF 上下文):

  • 将 EF 项目复制到暂存目录
  • 在同一文件夹中复制 migrate.exe( migrate.exe 需要放在包含 EF 迁移的程序集旁边 )
  • 执行 migrate.exe

  • 详细:
  • 复制文件“任务”
  • 源文件夹:$(build.sourcesdirectory)
  • 内容:Contoso.EF\bin\debug\**
  • 目标文件夹:$(build.artifactstagingdirectory)/EF
  • 复制文件“任务”
  • 源文件夹:$(build.sourcesDirectory)\packages\EntityFramework.6.1.3\tools
  • 内容:migrate.exe
  • 目标文件夹:$(build.artifactstagingdirectory)\EF\Contoso.EF\bin\debug\bin\debug
  • 批处理脚本“任务”
  • 路径:$(build.sourcesdirectory)_Deploy\MigrateEFContext.bat
  • 参数:$(build.artifactstagingdirectory)\EF\Contoso.EF\bin\debug Contoso.EF.dll [SQL-SERVER-INSTANCE] [DbName] System.Data.SqlClient

  • 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
    

    关于entity-framework - 如何从 Visual Studio Online 运行 Entity Framework 的 migrate.exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107531/

    相关文章:

    entity-framework - Entity Framework ,已经有一个与此连接关联的打开的 DataReader 必须先关闭

    entity-framework - EF - 为什么不包括对属性的工作

    asp.net-mvc - VSTS MSDeploy 深层嵌套路径

    azure - 尝试从 azure devops 推送到 azure 容器注册表时请求访问被拒绝

    C# 使用主键在数据库中保存值

    c# - Entity Framework - SQL Server 2005 - IIS 服务器日期时间问题

    mysql - 如何使用Data Annotations继承类

    Azure DevOps 扩展 : Passing query parameters to custom build report view

    azure-devops - 为什么我在 Azure DevOps Build Pipeline 中的测试会运行两次?

    Azure DevOps - 自定义任务 - 具有 Azure 身份验证的 PowerShell