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

删除BusAppl关联实体时触发NullReferenceException问题咨询

解决删除BusApplDpndncy时的NullReferenceException问题

我一眼就看出问题出在你BusAppl属性的setter里——当EF在处理实体删除的关联清理时,会把这个导航属性设为null,而你的setter直接访问了value.BusApplNm,这自然会抛出空引用异常。

问题根源

当你调用_context.BusApplDpndncy.Remove(toRemove);然后执行SaveChanges()时,Entity Framework会自动处理实体间的关联关系:如果BusApplDpndncy和BusAppl是可选关联,EF可能会尝试将BusApplDpndncy的BusAppl导航属性置为null(用于清理关联状态)。这时候你的setter方法接收到null作为value,直接访问value.BusApplNm就触发了NullReferenceException。

解决方案

最简单的修复方式就是在setter里增加null检查,避免访问null对象的属性:

public BusAppl BusAppl 
{ 
    set 
    {
        // 用空条件运算符安全访问属性,value为null时直接返回null
        this._BusApplName = value?.BusApplNm; 
        this._BusAppl = value; 
    } 
    get { return this._BusAppl; } 
}

如果你使用的是不支持空条件运算符?.的旧版C#,可以改用传统的判断逻辑:

public BusAppl BusAppl 
{ 
    set 
    {
        if (value != null)
        {
            this._BusApplName = value.BusApplNm; 
        }
        else
        {
            this._BusApplName = null; // 也可根据业务需求设置默认值
        }
        this._BusAppl = value; 
    } 
    get { return this._BusAppl; } 
}

额外优化建议

你也可以检查EF的关系配置,确认是否需要在删除BusApplDpndncy时自动清理BusAppl导航属性。如果业务逻辑中删除关联实体不需要修改BusAppl的状态,可以通过调整关系配置避免EF自动设置导航属性为null,但上面的setter修复已经是最直接解决当前异常的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:20:26