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

如何让Entity Framework迁移使用appsettings.Development.json中的连接字符串?

解决EF迁移读取appsettings.Development.json连接字符串的问题

首先得揪出你配置文件里的一个关键错误:你的appsettings.Development.json把ConnectionStrings节点嵌套在Logging里面了!配置系统只会读取根节点下的ConnectionStrings,所以EF自然找不到这个配置,只能 fallback 到appsettings.json里的正确配置。

第一步:修正appsettings.Development.json的结构

把ConnectionStrings移到根节点,和Logging同级,正确的配置应该是这样:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {
    "ConexaoPadrao": "Server=localhost;Database=Agenda;Uid=root;Pwd=root;"
  }
}

第二步:确保开发环境已激活

EF迁移会根据当前的ASPNETCORE_ENVIRONMENT环境变量来加载对应的配置文件,所以要确保这个变量设置为Development:

  • Visual Studio调试时:右键项目 → 属性 → 调试 → 环境变量,检查是否添加了ASPNETCORE_ENVIRONMENT=Development,没有的话手动添加。
  • 命令行执行迁移前:
    • Windows命令行:set ASPNETCORE_ENVIRONMENT=Development
    • PowerShell:$env:ASPNETCORE_ENVIRONMENT = "Development"
    • Linux/macOS终端:export ASPNETCORE_ENVIRONMENT=Development

第三步:执行迁移时可显式指定环境(可选但更稳妥)

如果怕环境变量没生效,可以在迁移命令里直接指定环境:

  • 使用.NET CLI:
dotnet ef migrations add 你的迁移名称 --environment Development
  • 使用Package Manager Console(Visual Studio内):
Update-Database -Environment Development

额外验证:确认配置加载正常

如果还是有问题,可以在Program.cs里加一段测试代码,看看当前环境和读取到的连接字符串是否正确:

var builder = WebApplication.CreateBuilder(args);

// 测试输出
var currentEnv = builder.Environment.EnvironmentName;
var connString = builder.Configuration.GetConnectionString("ConexaoPadrao");
Console.WriteLine($"当前运行环境:{currentEnv}");
Console.WriteLine($"读取到的连接字符串:{connString}");

// 其他原有代码...

运行项目后看控制台输出,就能确认是否加载到了appsettings.Development.json里的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:02:48