0

我一直在关注 Microsoft 网站上的 contoso 大学教程,但我对 Entity Framework 如何做一些事情有一些疑问。开始了...

在教程开始时,我们创建了三个类,它们将在我的数据库中转换为表。

我想知道实体何时以及如何实例化我的类以填充对象。

我使用代码优先的方法。

例子:

我正在使用的课程:

public class Course
{
    public int CourseID { get; set; }
    public string Title { get; set; }
    public int Credits { get; set; }
    public virtual ICollection<Enrollment> Enrollments { get; set; }
}

public class Enrollment
{
    public int EnrollmentID { get; set; }
    public int CourseID { get; set; }
    public int StudentID { get; set; }
    public decimal? Grade { get; set; }
    public virtual Course Course { get; set; }
    public virtual Student Student { get; set; }
}

public class Student
{
    public int StudentID { get; set; }
    public string LastName { get; set; }
    public string FirstMidName { get; set; }
    public DateTime EnrollmentDate { get; set; }
    public virtual ICollection<Enrollment> Enrollments { get; set; }
}

遵循教程后,我现在可以列出所有我Students和他们各自的Course的所有属性,以及它们的属性。

实体何时实例化我的Student类并用相应的类填充它Enrollment(s)列表填充它?

它如何知道哪些注册与该学生相关联?我没有看到任何新的构造函数()被调用。

这可能很简单,但我有点迷失在这里。

谢谢

4

1 回答 1

1

它不会提前实例化任何东西,也不必这样做。而且表格中也不会有任何代表虚拟财产的东西。

EF 在运行时使用这些虚拟属性来存储导航信息,并且集合可以为 null 或包含 0 个或多个元素。没有魔法,EF 在需要时“更新”集合只是设计使然。

如果你想明确一点,你也可以在你的 POCO 上创建一个构造函数,并将你的集合设置为一个新的哈希表。

于 2012-06-01T04:44:20.897 回答