Docker容器中的EF Core迁移

时间:2018-02-05 07:46:34

标签: docker entity-framework-core asp.net-core-2.0 entity-framework-core-migrations

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

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

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

此致

1 个答案:

答案 0 :(得分:0)

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

在启动过程中,我们还有一些其他星座:

  • 仅在本地使用Docker容器(确保用于开发环境和测试)
  • 执行Database.Migrate()部分的自己的启动项目(因为我们有多个拥有自己数据库的项目)
  • 具有实际API网站的其他项目:)
  • 带有Azure SQL服务器的生产环境(通过Azure DevOps管道发布和部署

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

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

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

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

致谢