在包管理器控制台执行数据库更新时报错 connectionString 参数值不能为null
包管理器控制台执行数据库更新时报"Value cannot be null. (Parameter 'connectionString')" 解决方案
在包管理器控制台执行Update-Database命令时触发该报错,本质是EF Core迁移流程在读取数据库连接配置环节,获取到的连接字符串值为null,直接触发了框架的参数合法性校验。可按以下顺序逐一排查修复:
检查连接字符串配置的有效性
- 定位解决方案的启动项目(即设置为启动项的可执行项目,如Web应用、控制台应用,而非存放EF上下文的类库项目),打开其目录下的配置文件(
appsettings.json/web.config/app.config) - 确认连接字符串配置节点无格式错误、无语法问题,合法配置示例如下:
"ConnectionStrings": { "DefaultConnection": "Server=127.0.0.1;Database=YourDb;Trusted_Connection=True;TrustServerCertificate=True;" } - 核对配置项的键名和代码中读取的键名完全一致,避免出现“配置写的是DefaultConnection,代码里却传错误键名读取”的低级错误
- 排除类库层配置干扰:不要在存放EF上下文的类库项目中单独放置连接字符串配置文件,EF迁移流程只会从启动项目的配置源加载参数,类库层的空配置文件可能导致框架读取路径异常,直接读不到配置值
检查DbContext的服务注册逻辑
- 打开启动项目的服务注册代码(.NET 6及以上版本为
Program.cs,旧版框架为Startup.cs),确认AddDbContext方法传入的连接字符串参数没有空值 - 常见错误写法:
// 错误:键名不匹配,读取结果为null builder.Services.AddDbContext<AppDbContext>(opt => opt.UseSqlServer(builder.Configuration.GetConnectionString("WrongKey")));
核对包管理器控制台与解决方案的项目选择
- 打开包管理器控制台顶部的项目下拉选择框,将默认项目设置为包含迁移代码、EF上下文定义的类库项目
- 检查解决方案资源管理器中加粗显示的启动项目,确保启动项目是存放完整连接字符串配置的可执行项目,而非单独选中的类库项目——迁移流程执行时会自动加载启动项目的配置,启动项目选择错误时,哪怕连接字符串配置完全正确,也会出现读取值为null的报错
内容的提问来源于stack exchange,提问作者Majid Qureshi
相关产品推荐
相关产品推荐

