【问题标题】:How to run EF Core migrations on SQL Server database using Docker?如何使用 Docker 在 SQL Server 数据库上运行 EF Core 迁移?
【发布时间】:2019-04-11 12:23:58
【问题描述】:

在 Mac 上,我有一个带有一些实体框架迁移的 Net Core 2.1 类库。

我需要使用 Docker 运行 SQL Server 并使用预览迁移更新数据库。

我在我的项目中添加了一个 docker-compose.yml 文件:

docker-compose.yml
src
  data
    project.data.csproj

docker-compose.yml 文件如下:

services:
  data:
    build: .
    depends_on:
      - database
  database:
  image: "microsoft/mssql-server-linux"
  environment:
    SA_PASSWORD: "Pass.word123"
    ACCEPT_EULA: "Y"

目前这不起作用。

如何在 Mac 中使用 docker 在 SQL Server 上运行 EF Core 迁移?

【问题讨论】:

  • 在我看来有两种方法,让 Docker 在容器构建期间执行 dotnet ef database update 或在运行时您可以使用 Database.Migrate(),这适合您的情况吗?
  • 我使用 dotnet ef 数据库更新
  • 您的要求正在讨论中in this issue on GitHub
  • 这是一个很好的问题,但我认为目前还没有可靠的解决方案。
  • 正如@AdamVincent 建议的那样,运行时迁移对我来说似乎是自然的解决方案。如果您出于某种原因想要手动运行迁移,请在 program/appsettings 中添加一些参数来控制行为

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


【解决方案1】:

您需要在启动文件的配置中添加以下行。它将在应用程序启动时执行。它将所有迁移文件更新到数据库。

using (IServiceScope scope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
            {
                scope.ServiceProvider.GetService<MyDBCOntext>().Database.Migrate();
            }

这对我有用。

【讨论】:

    猜你喜欢
    • 2021-01-16
    • 2020-05-29
    • 2020-10-02
    • 2017-05-27
    • 2021-10-02
    • 1970-01-01
    • 2018-06-19
    • 2019-08-03
    • 1970-01-01
    相关资源
    最近更新 更多