Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops 在Azure Devops中为EF6迁移编写脚本_Azure Devops_Continuous Integration_Entity Framework 6_Entity Framework Migrations_Build Pipeline - Fatal编程技术网

Azure devops 在Azure Devops中为EF6迁移编写脚本

Azure devops 在Azure Devops中为EF6迁移编写脚本,azure-devops,continuous-integration,entity-framework-6,entity-framework-migrations,build-pipeline,Azure Devops,Continuous Integration,Entity Framework 6,Entity Framework Migrations,Build Pipeline,我有一个EF6项目,我想为迁移生成一个脚本。在本地,我只运行updatedatabase-script,但我想创建一个生成脚本的构建管道,然后创建一个部署管道,当我们准备推送到不同的环境时执行该脚本。是否在Azure Devops构建管道中生成这样的脚本?对于此问题,您可以尝试 此任务允许构建/发布提供数据库连接参数,并针对数据库执行Entity Framework 6迁移 为了完成此任务,您必须采取以下步骤: 将项目生成到输出文件夹并包含migrate.exe 实体框架6附带的可执行文件 创

我有一个EF6项目,我想为迁移生成一个脚本。在本地,我只运行
updatedatabase-script
,但我想创建一个生成脚本的构建管道,然后创建一个部署管道,当我们准备推送到不同的环境时执行该脚本。是否在Azure Devops构建管道中生成这样的脚本?

对于此问题,您可以尝试

此任务允许构建/发布提供数据库连接参数,并针对数据库执行Entity Framework 6迁移

为了完成此任务,您必须采取以下步骤:

  • 将项目生成到输出文件夹并包含migrate.exe 实体框架6附带的可执行文件
  • 创建一个自动构建,将文件打包并生成 在发布期间可访问
  • 为相关生成创建发布定义
  • 添加EF6迁移任务。一旦将该任务添加到环境中 在版本中,您需要输入适当的参数 来配置它。所有文件路径参数都应在文件中 对于构建,没有一个用于TFS源代码管理路径

  • 通过使用“复制文件”任务,首先将整个项目从构建管道复制到工件暂存目录,我成功地在发布管道中运行了EF6迁移:

    源文件夹:
    $(build.sourcedirectory)\\

    目标文件夹:
    $(build.artifactstagingdirectory)\EFMigration

    然后在命令行任务中运行由“更新数据库”命令执行的脚本。 我通过在EF6项目的包管理器控制台中手动运行“updatedatabase-verbose”命令,复制显示的脚本,并将路径调整为我复制到工件暂存目录中的路径,从而获得了脚本。它应该是这样的:

    $(System.DefaultWorkingDirectory)/<..>/drop/EFMigration/packages/EntityFramework.6.4.4/tools/net45/any/ef6.exe database update --no-color --prefix-output --assembly $(System.DefaultWorkingDirectory)/<..>/drop/EFMigration/EFM.Data/bin/Release/EFM.Data.dll --project-dir $(System.DefaultWorkingDirectory)/<..>/drop/EFMigration/EFM.Data\ --language C# --data-dir $(System.DefaultWorkingDirectory)/<..>/drop/EFMigration/EFMigration/App_Data --root-namespace EFM.Data --config $(System.DefaultWorkingDirectory)/<..>/drop/EFMigration/EFMigration/Web.config
    
    $(System.DefaultWorkingDirectory)//drop/EFMigration/packages/EntityFramework.6.4.4/tools/net45/any/ef6.exe数据库更新--无颜色--前缀输出--程序集$(System.DefaultWorkingDirectory)//drop/EFMigration/EFM.Data/bin/Release/EFM.Data.dll--项目目录$(System.DefaultWorkingDirectory)//drop/EFMigration/EFM.Data \--语言C#--Data dir$(System.DefaultWorkingDirectory)//drop/EFMigration/EFMigration/App_Data--根命名空间EFM.Data--config$(System.DefaultWorkingDirectory)//drop/EFMigration/EFMigration/Web.config
    

    在我的例子中,“addmigration”命令将在提交之前手动运行,并且创建的scaffold将自动在发布管道中使用。您可以使用与我获取“更新数据库”脚本相同的方法来获取“添加迁移”脚本,但我没有尝试将其自动化。

    您尝试了什么?你做了什么研究?什么不起作用?不能在命令行中使用dotnet ef命令,因为它不是一个核心项目。我在网上找不到任何关于在microsoft托管的vm上运行与package manager控制台相当的人的信息。migrations.exe之类的东西不起作用,因为它们不生成脚本。@Ashley Edds无法获取您的最新信息,解决方法对您有帮助吗?或者,如果您有任何问题,请随时在这里分享。这只是EF Core的吗?我遇到问题的项目是EF6,dotnet ef migrations脚本未作为命令行任务使用。您可以尝试实体框架迁移扩展,此扩展支持EF6。