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

标签 postgresql azure azure-devops azure-pipelines ef-core-3.1

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

  1. 在我的构建管道中:This task用我的数据库生成了一个sql脚本 迁移。
  2. 在发布管道中:This task 使用此脚本更新数据库。

问题是,现在我使用 PostgreSQL 数据库,我找不到一种简单而干净的方法来以相同的方式更新数据库。我看到有another task for MySQL这与我在 SQL Server 上执行的发布管道任务完全相同,但对 PostgreSQL 没有任何作用。

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

最佳答案

我终于解决了这个问题。

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

  1. 首先,所有支持 Entity Framework 迁移的数据库都有一个通用修复程序:
    • 使用.NET Core任务,我们必须安装dotnet ef工具: 该任务如下所示:

Intalling dotnet ef tools

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

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

您只需添加标志 -c,以防您的项目中有多个上下文(有时其他 DbContext 可能来自某些 block 包)。

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

<小时/>
  • 另一种选择(也是我最终使用的),就是使用 this task基本上执行相同的过程,不同之处在于它是通过使用已编译的 .dll 文件来完成的,因此您不必复制整个项目即可进行迁移。任务的设置,虽然您必须填写许多输入,但它非常简单,并且它应该也可以与其他数据库一起使用。
  • 但是,如果我必须使用SQL ServerMySQL,我会使用迁移脚本,因为这个过程要容易得多(您只需要生成一个>.sql 脚本,然后它是部署迁移所需的唯一文件)。

    关于postgresql - 通过 Azure DevOps 中的 EFCore 迁移更新 postgreSQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62387662/

    相关文章:

    sql - 获取具有最高值的行的所有字段

    c - 读取 SELECT 的值并将其作为 int 存储在 C 中

    c# - Cosmos DB 中是否支持使用 OData 进行分页?

    C# 调用 Jupyter Notebook

    azure-devops - Azure Devops 市场 - Azure Devops Server 2020 支持

    sql - 在 PostgreSQL 中使用 Jsonb_array_elements_text() 的 2 种方法

    postgresql - 如何使具有权限的一个用户postgresql仅执行功能

    c# - 如何配置 Consumer 以处理不同的消息类型?(MassTransit)

    docker - 我正在使用 Azure Devops 来构建和推送我的 Docker 镜像。使用 Docker 任务执行 buildAndPush 时如何传递参数?

    android - 签名和对齐 apk 步骤 : No matching files were found with search pattern