gpt4 book ai didi

c# - 在 Docker 镜像中使用 ASP.Net Core 时应用 Entity Framework 迁移

转载 作者:行者123 更新时间:2023-11-30 17:26:41 25 4
gpt4 key购买 nike

我有一个 ASP.Net Core 应用程序,它使用 Entity Framework 和 Sqlite。我正在构建一个 Docker 镜像来部署它。

ASP.Net Core 应用程序在使用 VS Code 调试时运行良好,但在 Docker 容器中运行时出现错误:

SqliteException: SQLite Error 1: 'no such table: MyTable'.

我认为这是因为我需要在构建 Docker 镜像时运行 Entity Framework 迁移。我已将 dotnet ef database update 添加到我的 Dockerfile,如下所示:

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

RUN dotnet ef database update

FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "MyApplication.dll"]

图像构建没有错误。但是,当我创建一个容器并查看数据库时,它是空的,没有任何表。

在构建 Docker 镜像时,使用 Entity Framework 设置数据库的正确方法是什么?

最佳答案

对于 .net 6 上的任何人,我在 Program.cs 文件中的 app.Run() 之前使用它在启动时应用迁移

using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;

var context = services.GetRequiredService<ApplicationDbContext>();
if (context.Database.GetPendingMigrations().Any())
{
context.Database.Migrate();
}
}

关于c# - 在 Docker 镜像中使用 ASP.Net Core 时应用 Entity Framework 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55970148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com