Docker容器中的EF Core迁移

use*_*223 35 docker entity-framework-core asp.net-core-2.0 entity-framework-core-migrations

我在.NET Core 2.0中设置WebApi.我将使用Entitty Framework Core作为ORM.整个应用程序将部署为Docker Container.让我感到不安的是在这种情况下处理数据库迁移的方式.我的意思是PRODUCTION环境.以下是我设法研究的内容:

  • 我们只是在应用程序启动时触发Database.Migrate()忘记整个世界 - 嗯不知何故我不喜欢它;-)
  • 由命令行参数驱动的Database.Migrate()(使用指定的param运行docker container一次以迁移DB)
  • 登录到应用程序容器并执行 dotnet ef database update
  • 基于迁移生成普通的旧SQL并从DB管理工具执行它.似乎oldschool但有效.我讨厌的是混乱执行我自己的脚本.
  • Perpare是一个数据库容器,它已经有从上面的代码生成的脚本,并且会自动执行它们.

还有其他建议吗?或者什么是最好,最合适的解决方案?

问候

小智 1

在我看来,这是您的第一点(Database.Migrate() 由于启动)主要满足我们的用例。所以对我来说,这是目前的首选方式。

我们在启动过程中还有一些额外的情况:

  • 仅本地 Docker 容器(用于开发环境和测试)

  • 自己的启动项目,执行 Database.Migrate() 部分(因为我们有多个项目拥有自己的数据库)

  • 带有实际 API 网站的附加项目:)

  • 具有 Azure SQL 服务器的生产环境(通过 Azure DevOps 管道发布和部署)

  • 迁移是通过 dotnet ef 在自己的项目中创建的...

    dotnet ef 迁移添加“您的迁移名称”--startup-project“实际 API 的路径”--context“数据库上下文名称”

重要提示:您必须先将工作目录更改为迁移项目,才能使用另一个启动项目,但在“迁移项目”中生成迁移文件

在我们的例子中,它可以与不同的 API 配合使用,并在后台拥有自己的数据库。

问候