首先了解代码虚拟属性

ale*_*dru 27 c# entity-framework entity-framework-4.1

嗨,我只是学习使用Entity Framework Code First,我似乎无法理解.我根据教程创建了三个模型:

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; }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我不明白虚拟的属性是什么.如果我检查数据库,每个属性都没有列条件箱,只有其他属性.

那么当您使用virtual关键字创建属性时会发生什么?

ken*_*n2k 39

它用于管理延迟加载更改跟踪.

EF将在运行时生成代理类型,这些类型是从POCO类继承的动态生成类型,并添加所有EF内容以管理重写的虚拟属性中的延迟加载/更改跟踪.

因此,virtual这里不是"神奇的关键字",virtual因此您可以在运行时使用其他与EF相关的代码继承您的POCO.


gre*_*jer 7

虚拟属性允许延迟加载