为什么对象的list <>属性为null

时间:2019-11-03 08:31:04

标签: c# entity-framework

编辑:我不是在问什么System.NullReferenceException是。我试图了解为什么该对象的list属性为null以及如何防止它为空。

当我尝试将新项目添加到客户的订单列表中时,我收到了System.NullReferenceException。我考虑过将列表属性设为静态,但是我不确定这是正确的方法。 在这种情况下定义类的正确方法是什么?

        using(var northwindContext = new NorthwindContext())
        {
            Customer customer = northwindContext.Customers.Find("ENGIN");
            customer.Orders.Add(
                new Order { 
                    OrderId = 1, 
                    OrderDate = DateTime.Now, 
                    ShipCity = "Ankara", 
                    ShipCountry = "Türkiye" 
                });

            northwindContext.SaveChanges();

        }


public class Customer
{
    public string CustomerID { get; set; }

    public string ContactName { get; set; }

    public string CompanyName { get; set; }

    public string City { get; set; }

    public string Country { get; set; }


    public List<Order> Orders { get; set; }
}

public class Order
{
    public int OrderId { get; set; }

    public string CustomerID { get; set; }

    public string ShipCity { get; set; }

    public string ShipCountry { get; set; }

    public DateTime OrderDate { get; set; }

    public Customer Customer { get; set; }


}

1 个答案:

答案 0 :(得分:0)

您尚未初始化Orders属性,因此无法添加它。

customer.Orders = new List<Order>();

您还可以在属性本身上初始化它(我更喜欢这样,这样您就不会忘记它)

public List<Order> Orders { get; set; } = new List<Order>();