4

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<Size> Sizes { get; set; }
    virtual public ICollection<Image> 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; }
}
4

2 に答える 2

10

Sizes コレクションを初期化するコンストラクターを Item に追加する必要があります。自動プロパティはバッキング変数を単純化しますが、初期化はしません。

public Item() 
{
    this.Sizes = new List<Size>();
}
于 2012-10-04T11:43:35.067 に答える
1

Item.Sizesそれはヌルだと思います。コレクションを初期化していないためitem.Sizes.AddNullReferenceException.

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

    public Item()
    {
        Sizes = new List<Size>();
    }
}
于 2012-10-04T11:43:43.820 に答える