实体框架,List<>的目的是什么?在construtor:

时间:2016-02-04 19:32:25

标签: asp.net entity-framework frameworks ef-code-first

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>();的目的是什么?

1 个答案:

答案 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; }
}

如果可以在没有构造函数运行的情况下构造对象,但是也有自己的一组陷阱(例如,写入它不是线程安全的),这种模式会很有用。