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

添加实体对象时触发System.NullReferenceException异常求助

问题原因与解决方案

问题根源

报错的原因不是p对象未实例化,而是annonce.Pieces为null。你的Annonce类中,Pieces属性定义为可空的ICollection<Piece>?,如果没有提前初始化这个集合,直接调用Add方法就会触发NullReferenceException。

解决方案

你可以通过以下几种方式解决:

1. 在Annonce类的构造函数中初始化集合

修改Annonce类,添加构造函数来初始化Pieces:

public class Annonce
{
   ... 
   public int ID { get; set; }
   public ICollection<Piece>? Pieces { get; set; }

   public Annonce()
   {
       Pieces = new List<Piece>();
   }
}

2. 在使用Pieces前检查并初始化

在循环中添加判断,确保Pieces不为null:

foreach (PieceTemp pt in _context.PiecesTemp.Where(pt => pt.userID == userID))
{
    Piece p = new Piece
    {
        Typepiece = pt.Typepiece,
        Superficie = pt.Superficie
    };
    // 检查并初始化Pieces
    annonce.Pieces ??= new List<Piece>();
    annonce.Pieces.Add(p);
}

3. 直接在属性定义时初始化

修改Annonce类的属性定义,直接赋予初始值:

public class Annonce
{
   ... 
   public int ID { get; set; }
   public ICollection<Piece>? Pieces { get; set; } = new List<Piece>();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:30:53