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
子句。如果子列表很大,则会显著影响性能。