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

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;

验证修复

  1. 修正BookDbRepository的构造函数赋值逻辑
  2. 修复Edit方法中的空引用风险
  3. 重新编译运行项目,此时Controller的所有操作应能正常访问,数据库查询不再抛出空引用异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:30:57