尝试添加一对多关系时出现NullReferenceException

Item可以包含多个Sizes 。 当我尝试向项目添加新大小时,它会抛出NullReference错误。 当我尝试将图像添加到我的项目时,会发生同样的事情。

你调用的对象是空的。

 var size = new Size(){ BasePrice = currentBasePrice, // not null, checked in debugger DiscountPrice = currentDiscountPrice // not null, checked in debugger }; // item is not null, checked in debugger item.Sizes.Add(size); // nothing here is null, however it throws null reference error here 

项目模型

 public class Item { public int ID { get; set; } public int CategoryID { get; set; } virtual public Category Category { get; set; } virtual public ICollection Sizes { get; set; } virtual public ICollection Images { get; set; } } 

尺寸模型

 public class Size { public int ID { get; set; } public int ItemID { get; set; } virtual public Item Item { get; set; } // tried to delete this, did not help public decimal BasePrice { get; set; } public decimal? DiscountPrice { get; set; } } 

您需要向初始化Sizes集合的Item添加构造函数。 自动属性简化了后备变量,但未初始化它。

 public Item() { this.Sizes = new List(); } 

我假设Item.Sizes为null。 您尚未初始化集合,因此item.Sizes.Add会抛出NullReferenceException

 public class Item { public int ID { get; set; } public int CategoryID { get; set; } virtual public Category Category { get; set; } virtual public ICollection Sizes { get; set; } virtual public ICollection Images { get; set; } public Item() { Sizes = new List(); } }