添加实体对象时触发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
相关产品推荐
相关产品推荐

