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

Entity Framework迁移Azure数据库失败:提示DefaultConnection未设置

问题原因与解决步骤

核心问题

  1. 设计时工厂连接字符串名称不匹配:你的DesignTimeDbContextFactory中尝试读取名为C10的连接字符串,但appsettings.json里仅配置了DefaultConnection,导致无法获取有效连接字符串,进而触发报错。
  2. 目标数据库配置未生效:你实际要连接Azure数据库,但当前appsettings.json里只有本地数据库的连接字符串,未配置Azure的连接信息。

解决步骤

1. 更新appsettings.json配置

添加Azure SQL数据库的连接字符串(可保留本地连接作为备用,也可直接替换DefaultConnection的值):

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=NewDb;Trusted_Connection=True",
    "C10": "Server=tcp:你的Azure服务器名.database.windows.net,1433;Initial Catalog=你的Azure数据库名;Persist Security Info=False;User ID=你的数据库用户名;Password=你的数据库密码;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

2. 修正设计时工厂的连接字符串读取逻辑

  • 若想使用新增的C10连接字符串:确保appsettings.json中存在该键即可(当前工厂代码已指定C10,无需修改)。
  • 若想直接用DefaultConnection:修改工厂代码中的读取名称:
var connectionString = configuration.GetConnectionString("DefaultConnection");

3. 验证迁移命令执行路径

执行迁移命令时,确保命令行工作目录是包含appsettings.json的项目根目录,否则设计时工厂无法找到配置文件。

4. 检查Program.cs中的DbContext注册(若有)

如果项目启动时注册了MigrationDbContext,确保注册代码使用的连接字符串与迁移配置一致:

builder.Services.AddDbContext<MigrationDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("C10"))); // 或"DefaultConnection",与迁移配置匹配

验证操作

完成修改后,重新执行迁移命令:

Add-Migration AddNewTables -Context MigrationDbContext
Update-Database -Context MigrationDbContext

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:05:18