public class Standard
{
public Standard()
{
Students = new List<Student>();
}
public int StandardId { get; set; }
public string Description { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
首先在EF代码上面构建Students = new List<Student>();
的目的是什么?
答案 0 :(得分:1)
您当然不必在构造函数中初始化学生。还有其他模式。请注意,完全可以在没有构造函数运行的情况下构造对象(例如,某些序列化程序以这种方式工作),因此在所有情况下甚至可能都不起作用。
在您初始化学生之前,它将为空。如果在任何初始化发生之前在代码中的某处尝试Students.Add(myStudent)
,则会出现NullReferenceException。
另一种常见模式是对Students属性执行延迟初始化,例如
private List<Student> students;
public List<Student> Students
{
get
{
if (students == null) students = new List<Student>();
return students;
}
set { students = value; }
}
如果可以在没有构造函数运行的情况下构造对象,但是也有自己的一组陷阱(例如,写入它不是线程安全的),这种模式会很有用。