首页 > 解决方案 > 在 Azure Devops 中编写 EF6 迁移脚本

问题描述

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

标签: azure-devopscontinuous-integrationentity-framework-6entity-framework-migrationsbuild-pipeline

解决方案


通过首先使用复制文件任务将整个项目从构建管道复制到工件暂存目录中,我设法在我的发布管道中运行 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”脚本,但我没有尝试自动执行此操作。


推荐阅读