3

我有一个 EF6 项目,我想为迁移生成一个脚本。在本地,我只是运行update-database - script,但我想创建一个构建管道来为此生成一个脚本,然后是一个部署管道,当我们准备好推送到不同的环境时执行这个脚本。无论如何要在 Azure Devops Build Pipeline 中生成这样的脚本吗?

4

2 回答 2

0

通过首先使用复制文件任务将整个项目从构建管道复制到工件暂存目录中,我设法在我的发布管道中运行 EF6 迁移:

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

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

然后在命令行任务中运行由“update-database”命令执行的脚本。我通过在 EF6 项目的包管理器控制台中手动运行“update-database -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

在我的情况下,“添加迁移”命令将在提交之前手动运行,并且创建的脚手架将自动用于发布管道。您可以使用与获取“Update-Database”脚本相同的方法来获取“Add-Migration”脚本,但我没有尝试自动执行此操作。

于 2020-12-16T17:49:42.827 回答
0

对于这个问题,你可以试试Entity Framework Migration Extensions

此任务允许 Build / Release 提供数据库连接参数并针对数据库执行 Entity Framework 6 迁移。

在此处输入图像描述

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

  1. 将项目构建到输出文件夹并包含 Entity Framework 6 附带的 migrate.exe 可执行文件。
  2. 创建一个自动构建,打包您的文件并使其在发布期间可访问。
  3. 为相关构建创建发布定义
  4. 添加 EF6 迁移任务。将该任务添加到版本中的环境后,您需要输入适当的参数来配置它。所有文件路径参数都应该在构建的文件系统中,它们都不用于 TFS 源代码控制路径。
于 2020-02-19T10:24:05.420 回答