ASP.NET Core项目调用Controller及查库时触发NullReferenceException
问题分析与修复
核心错误:DbContext未正确初始化
报错的直接原因是BookDbRepository中的db字段始终为null,因为构造函数里的赋值语句写反了:
错误代码(BookDbRepository构造函数)
public BookDbRepository(BookstoreDbContext _db) { _db = db; // 错误:将未初始化的db赋值给参数_db,类的db字段仍为null }
修复后的构造函数
public BookDbRepository(BookstoreDbContext _db) { db = _db; // 正确:将依赖注入的DbContext实例赋值给类的db字段 }
这个错误会导致所有依赖BookDbRepository的操作(如List()、Add())都触发NullReferenceException,因为db对象从未被初始化。
次要问题:Edit方法中的潜在空引用
在BookController的Edit方法中,以下代码存在空引用风险:
var authorId = book.Author == null ? book.Author.Id = 0 : book.Author.Id;
若book.Author为null,book.Author.Id会直接抛出空引用异常,应修改为:
var authorId = book.Author?.Id ?? 0;
验证修复
- 修正
BookDbRepository的构造函数赋值逻辑 - 修复
Edit方法中的空引用风险 - 重新编译运行项目,此时Controller的所有操作应能正常访问,数据库查询不再抛出空引用异常
内容的提问来源于stack exchange,提问作者hamada magdy
相关产品推荐
相关产品推荐

