通过 Azure DevOps 中的 EFCore 迁移更新 postgreSQL DB

2023-12-23

在Azure DevOps中,我用来更新的方式SQL服务器数据库使用 Entity Framework Core,使用两个任务:

  1. 在我的构建管道中:这个任务 https://github.com/pekspro/EF-Migrations-Script-Generator-Task用我的数据库生成了一个sql脚本 迁徙。
  2. 在发布管道中:这个任务 https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/SqlDacpacDeploymentOnMachineGroupV0/README.md使用此脚本更新数据库。

问题是,现在我正在使用PostgreSQL数据库,我找不到一种简单而干净的方法来以相同的方式更新数据库。我见过有MySQL 的另一个任务 https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/MysqlDeploymentOnMachineGroupV1/README.md这与我的发布管道任务对 SQL Server 所做的完全相同,但对 PostgreSQL 没有任何作用。

所以我想我基本上可以执行dotnet ef update database(设置了正确的选项)在管道中,但我想知道是否真的有一种方法可以像我以前那样顺利地更新数据库。


我终于得修好它了。

我发现有两种解决方案可以解决该问题。

  1. First, there's a common fix for all the databases that support Entity Framework Migrations:
    • Using a .NET核心任务,我们必须安装dotnet ef 工具: 任务看起来像这样:

这将是 YAML(如果您想在发布管道之外使用它):

 - task: DotNetCoreCLI@2
  displayName: 'dotnet custom'
  inputs:
    command: custom
    custom: tool
    arguments: 'install --global dotnet-ef --version 3.1.4 --ignore-failed-sources'
  • 一旦我们安装了所需的工具,CMD or a Bash任务,我们必须执行这样的脚本:
dotnet ef database update -c <DBCONTEXT> -p <PROJECT> -s <STARTUP_PROJECT> -v --no-build

你只需要添加标志-c如果您的项目中有多个上下文(有时其他 DbContext 可能来自一些块包)。

注意我添加了标志--无构建因为我已经在构建管道中构建了该项目以遵循良好实践。


  1. 另一种选择(也是我最终使用的),它是使用这个任务 https://marketplace.visualstudio.com/items?itemName=bendayconsulting.build-task基本上执行相同的过程,不同之处在于它是通过使用已经编译的.dll文件,因此您不必复制整个项目即可进行迁移。任务的设置,虽然您必须填写许多输入,但它非常简单,并且它应该也可以与其他数据库一起使用。

但是,如果我必须使用SQL服务器 or MySQL我会使用迁移脚本,因为这个过程要容易得多(您只需要生成一个.sql脚本,然后它是部署迁移所需的唯一文件)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Azure DevOps 中的 EFCore 迁移更新 postgreSQL DB 的相关文章

随机推荐

  • 将 JSON 反序列化为类

    服务器返回 JSON 的以下部分 condition or and operand a operator value true not operand b operator
  • Flutter,如何创建嵌入文本的边框?

    有谁知道如何创建顶部带有文本的边框 如下所示 创建帐户 Stack children
  • SKSpriteNode 隐藏在父节点下方

    使用 Swift 和 SpriteKit 我遇到了当将 SKSpriteNode 作为子项添加到另一个 SKSpriteNode 时未显示的问题 相比之下 放置在完全相同位置的 SKLabelNode 确实会出现 does not show
  • Javascript - onerror 事件在 Firefox 中不起作用

    img src 这个非常简单的 onerror 事件处理程序会在找不到图像时隐藏图像 它在 Chrome 中按预期工作 但在 Firefox 中 它什么也不做 这是一个 jsFiddle 您可以尝试在 Chrome 和 Firefox 中运
  • 在flutter中将小部件封装在它自己的类中?

    我正在尝试创建一个tile for my listview 虽然图块在放置在列表视图文件中时可以工作 但我想知道如何封装tile小部件到它自己的类文件中 具体来说 如果tile对象不接受参数 我可以简单地扩展一个无状态小部件并调用build
  • 通过 CSS 属性“transform:scale(0.5)”进行缩放的 Angular CDK 拖放无法按预期工作

    通过 CSS 属性 transform scale 0 5 进行缩放的 Angular CDK 拖放无法按预期工作 如果外层 DIV 按 CSS 属性缩放 变换 比例 0 5 拖动与鼠标指针未正确对齐 一旦标度不等于 1 就会发生这种情况
  • 法拉第超时

    我已经在线搜索了文档和其他地方 似乎无法想出为法拉第设置超时选项的正确方法 有人有答案吗 我试过了 conn FaradayStack build url conn headers user agent AppConfig user age
  • 使用Phantom.js评估,如何获取页面的HTML?

    page evaluate function return document function result console log result next 结果实际上是一个巨大的物体 我不知道该对象的属性和属性 我只想要页面的 HTMLa
  • R 中 3 个分类变量和 1 个连续变量的 SE 点图

    我正在尝试生成一个点图 其中包含具有三个分类变量 mea tre 和 sex 的设计中单个测量值 len 的值 I ve produced a plot that has all I m looking for split across s
  • Google 地图 v3:大尺寸标记

    我需要在地图上显示标记 它运行良好 唯一的问题是它们看起来太小了 如何确保所使用的标记尺寸较大并且几乎在任何缩放状态下都可以看到 为了使图标更大 我绝对建议使图标图像更大 例如 要使用缩小的高分辨率图标修复高 dpi 移动设备上的像素图标
  • 打开 Storyboard 时 Xcode 8 挂起/无响应

    我最近升级到了 Xcode 8 并将我的项目更新到了 Swift 3 一段时间内一切都运行良好 故事板加载一直很慢 即使仍然运行 Xcode 7 并且与 Xcode 8 几乎一样 慢 我一直以为这是因为我使用的是较旧的 2011 年末 Ma
  • git-log 和 git-whatchanged 之间的区别?

    Given 这个答案 https stackoverflow com a 280140 10608另一个问题 以及 鉴于两者的手册页git log http linux die net man 1 git log and git whatc
  • 字符串文字作为方法的参数

    Java 中的任何字符串文字都是类型的常量对象String并存储在字符串文字池中 Will String作为参数传递给方法的文字也存储在String文字池 例如当我们写的时候 System out println Hello OR anyo
  • Bootstrap3 Affix 中的 data-offset-bottom

    我想从我的附加元素中设置 停止 例如投票http 9gag com http 9gag com 它滚动直到其父容器 我为此使用了affix 我发现了 data offset bottom 属性 没有太多记录 div class homepa
  • IE JQuery 就绪功能不起作用

    显然很多人都遇到过这个问题 但我还没有找到有效的解决方案 我有一些代码需要在页面加载后运行 因此我将其粘贴在以下块中 document ready function alert Running initialization initiali
  • 使用端口 80 时 Apache 服务失败(“繁忙”)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何配置 Apache 服务器在端口 80 上运行 我的 Apache 服务在使用端口 80 时失败 它说BUSY 当我将配置中的端口更改
  • 通过 JSch shell 执行多个命令

    我试图使用 JSch 库通过 SSH 协议执行多个命令 但我似乎陷入困境 找不到任何解决方案 这setCommand 方法每个会话只能执行单个命令 但我想像Android平台上的connectbot应用程序一样顺序执行命令 到目前为止我的代
  • 批量上传大图片到cloudinary

    有没有办法将图像批量上传到我的 cloudinary 帐户 我希望一次导入 100 张图像 每张图像 3MB 谢谢 您可以使用Cloudinary的上传API来一张一张上传图片 这是 Python 中的示例上传代码 https github
  • Xcode 8 beta 6:main.swift 无法编译

    我们有一个自定义的 UIApplication 对象 所以我们的 main swift 是 import Foundation import UIKit UIApplicationMain Process argc Process unsa
  • 通过 Azure DevOps 中的 EFCore 迁移更新 postgreSQL DB

    在Azure DevOps中 我用来更新的方式SQL服务器数据库使用 Entity Framework Core 使用两个任务 在我的构建管道中 这个任务 https github com pekspro EF Migrations Scr