首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Azure postgreSQL中通过EFCore迁移更新DevOps数据库

在Azure postgreSQL中通过EFCore迁移更新DevOps数据库
EN

Stack Overflow用户
提问于 2020-06-15 11:54:22
回答 1查看 1.5K关注 0票数 5

在Azure DevOps中,我用来更新Server数据库的方法是使用实体框架核心(),使用两个任务:

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

问题是,既然我使用的是PostgreSQL数据库,我就找不到一种简单而干净的方法来以同样的方式更新数据库。我已经看到,MySQL的另一项任务与Server执行的发布管道任务完全一样,但对于PostgreSQL则没有。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-16 11:59:03

我终于要修好它了。

我找到了两种解决办法来解决这个问题。

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

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

代码语言:javascript
复制
 - task: DotNetCoreCLI@2
  displayName: 'dotnet custom'
  inputs:
    command: custom
    custom: tool
    arguments: 'install --global dotnet-ef --version 3.1.4 --ignore-failed-sources'
  • 一旦安装了所需的工具(带有CMD或Bash ),我们就必须执行如下脚本:
代码语言:javascript
复制
dotnet ef database update -c <DBCONTEXT> -p <PROJECT> -s <STARTUP_PROJECT> -v --no-build

您只需添加标志-c,以防您的项目中有多个上下文(有时另一个DbContexts可能来自一些块包)。

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

  1. 另一个选项(以及我最后使用的那个选项)是使用这一任务,它基本上执行相同的过程,其不同之处在于它通过使用已经编译的.dll文件来完成,所以您不必复制整个项目来使迁移工作。任务的设置,尽管您必须填充许多输入,但它非常简单,而且它也应该与其他数据库一起工作。

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62387662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档