gpt4 book ai didi

c# - 了解代码优先虚拟属性

转载 作者:IT王子 更新时间:2023-10-29 04:16:20 25 4
gpt4 key购买 nike

您好,我刚刚开始学习使用 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; }
}

我的问题是我不明白虚拟属性的作用。如果我检查数据库,没有每个属性的列箱,只有其他属性。

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

最佳答案

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

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

所以 virtual 在这里不是“魔术关键字”,virtual 在这里是为了让您的 POCO 可以在运行时通过其他与 EF 相关的代码继承。

关于c# - 了解代码优先虚拟属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15247614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com