如何让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
- Windows命令行:
第三步:执行迁移时可显式指定环境(可选但更稳妥)
如果怕环境变量没生效,可以在迁移命令里直接指定环境:
- 使用.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
相关产品推荐
相关产品推荐

