C# 导航属性上的Null引用异常

C# 导航属性上的Null引用异常,c#,asp.net-mvc,entity-framework,nullreferenceexception,C#,Asp.net Mvc,Entity Framework,Nullreferenceexception,有人能提出以下问题的原因吗?我的密码在网上被破解了 integerList.Integers.Add(integer); 显示错误消息 Object reference not set to an instance of an object. IntegerList.Integers为空,我怀疑这是原因,但解决方案是什么?初始化变量时是否必须设置IntegerList.Integers值,使其永远不为空 型号 public class IntegerList { public int

有人能提出以下问题的原因吗?我的密码在网上被破解了

integerList.Integers.Add(integer);
显示错误消息

Object reference not set to an instance of an object.
IntegerList.Integers为空,我怀疑这是原因,但解决方案是什么?初始化变量时是否必须设置IntegerList.Integers值,使其永远不为空

型号

public class IntegerList
{
    public int IntegerListID { get; set; }
    public string Direction { get; set; }
    public long Performance { get; set; }
    public virtual ICollection<Integer> Integers { get; set; }
}

public class Integer
{
    public int IntegerID { get; set; }
    public int IntegerValue { get; set; }
    public int IntegerListID { get; set; }
    public virtual IntegerList IntegerList { get; set; }
}

因为
Integers
属性未初始化且为空。您试图对一个null对象调用
Add
方法,这给了您一个错误

解决方案:初始化
IntegerList
类构造函数中的属性

public class IntegerList
{
    public int IntegerListID { get; set; }
    public string Direction { get; set; }
    public long Performance { get; set; }
    public virtual ICollection<Integer> Integers { get; set; }

    public IntegerList()
    {
      Integers =new List<Integer>();
    }
}
公共类整数列表
{
公共整数整型列表{get;set;}
公共字符串方向{get;set;}
公共长性能{get;set;}
公共虚拟ICollection整数{get;set;}
公共整数列表()
{
整数=新列表();
}
}

因为
Integers
属性未初始化且为空。您试图对一个null对象调用
Add
方法,这给了您一个错误

解决方案:初始化
IntegerList
类构造函数中的属性

public class IntegerList
{
    public int IntegerListID { get; set; }
    public string Direction { get; set; }
    public long Performance { get; set; }
    public virtual ICollection<Integer> Integers { get; set; }

    public IntegerList()
    {
      Integers =new List<Integer>();
    }
}
公共类整数列表
{
公共整数整型列表{get;set;}
公共字符串方向{get;set;}
公共长性能{get;set;}
公共虚拟ICollection整数{get;set;}
公共整数列表()
{
整数=新列表();
}
}
当您这样做时

var integerList = new IntegerList
            {
                Direction = integerViewModel.Direction
            };
关联的整数未初始化,您可以在IntegerList contsctructor中对其进行初始化。或者执行以下操作

var integerList = new IntegerList
                {
                    Direction = integerViewModel.Direction,
                    Integers=new List<Integer>()

                };
var integerList=新整数列表
{
方向=集成服务模型方向,
整数=新列表()
};
当您这样做时

var integerList = new IntegerList
            {
                Direction = integerViewModel.Direction
            };
关联的整数未初始化,您可以在IntegerList contsctructor中对其进行初始化。或者执行以下操作

var integerList = new IntegerList
                {
                    Direction = integerViewModel.Direction,
                    Integers=new List<Integer>()

                };
var integerList=新整数列表
{
方向=集成服务模型方向,
整数=新列表()
};

几乎所有的
NullReferenceException
情况都是相同的。有关提示,请参见“”。
NullReferenceException
的几乎所有情况都是相同的。请参阅“”以获取一些提示。请小心将子对象实例化为
新列表
。如果您在构造函数中将
整数
子集合初始化为
新列表
,那么当您想在子属性
整数
上执行
Where
子句时,您将从该父记录的数据库中获取所有子
整数
,然后将应用
Where
子句。如果子列表很大,则会显著影响性能。请小心将子对象实例化为
新列表
。如果您在构造函数中将
整数
子集合初始化为
新列表
,那么当您想在子属性
整数
上执行
Where
子句时,您将从该父记录的数据库中获取所有子
整数
,然后将应用
Where
子句。如果子列表很大,则会显著影响性能。