You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

容器化.NET Api中Database.Migrate()无法创建迁移的问题

问题:Docker-Compose下.NET Web API的EF Core迁移不生效及手动迁移连接失败

我正在学习Docker、容器及.NET技术,通过docker-compose启动了两个容器:SQL Server数据库容器和.NET Web API容器。已配置数据库自动迁移,但修改实体后迁移并未生成。尝试手动执行update-database命令时,由于Visual Studio启动docker-compose需将Users.Api设为启动项,而设置该启动项后数据库容器未运行,导致操作无法连接数据库。

docker-compose代码片段

usersdb:
  container_name: usersdb
  restart: always
  user: root
  environment:
    SA_PASSWORD: aCertainPassword
    ACCEPT_EULA: Y
  ports:
    - "1433:1433"
  volumes:
    - users_data:/var/opt/mssql/data
users.api:
  container_name: users.api
  environment:
    - ASPNETCORE_ENVIRONMENT=Development
  depends_on:
    - usersdb
  ports:
    - "8300:80"

项目结构

  • 解决方案包含多项目结构,核心项目包括:
    • Users.Api:Web API主项目
    • Users.Infrastructure:包含EF Core上下文(UsersContext)及扩展方法的类库
    • 其他辅助类库项目

Program.cs代码

using Microsoft.EntityFrameworkCore;
using Users.Infrastructure.Extensions;
using Users.Infrastucture.Contexts;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.AddAutoMapper();
builder.Services.AddRepositories();

builder.Services.AddDbContext<UsersContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));

builder.Services.AddDatabaseDeveloperPageExceptionFilter();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

using (var scope = app.Services.CreateScope())
{
    var dataContext = scope.ServiceProvider.GetRequiredService<UsersContext>();
    dataContext.Database.Migrate();
}

app.UseAuthorization();

app.MapControllers();

app.Run();

内容的提问来源于stack exchange,提问作者rardav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 08:27:04