实体

2025年3月17日 | 阅读 3 分钟

什么是 Entity Framework 中的实体?

Entity Framework 中的实体是映射到数据库表的类。该类必须包含在 DbContext 类中作为 DbSet类型属性。Entity Framework API 将每个实体映射到一个表,并将实体的每个属性映射到数据库中的一个列。

这里我们以学校应用程序中的 Student 和 Grade 域类为例。

当它们包含在 DbContext 派生类(从 DbContext 派生的类)中作为 DbSet属性时,上述类就成为实体,如下所示

在上面的 context 类中,Students 和 Grades 属性是 DbSet<TEntity> 的类型,称为实体集合。 Student 和 Grades 是实体。Entity Framework API 将在数据库中创建 Students 和 Grades 表。

Entity

一个实体可以包含两种类型的属性:标量属性导航属性

标量属性: 原始属性的类型称为标量属性。每个标量属性映射到数据库表中存储实际数据的一列。例如,StudentID、StudentName、DateofBirth、height 和 weight 是 Student 实体类中的标量属性。

Entity Framework API 将为数据库表中的每个标量属性创建一个列。

Entity

导航属性

导航属性表示与另一个实体的关系。我们有两种类型的导航属性:引用导航、集合导航

引用导航属性

如果一个实体包含另一种实体类型的属性,则它被称为引用导航属性。它指向单个实体,表示实体关系的个数为一 (1)。

Entity Framework API 将在表中使用指向数据库中另一个表的主键的导航属性创建一个 ForeignKey 列。例如,Grade 是以下 Student 实体类中的引用导航属性。

在数据库中,Entity Framework API 将在 Student 表中创建一个 ForeignKey Grade_GradeID

集合导航属性

如果一个实体包含实体类型的泛型集合的属性,则它被称为集合导航属性。

Entity Framework API 不会为实体的相关表中的导航属性创建任何列。但是,它会在泛型集合实体的表中创建一个列。例如,Grade 实体包含一个泛型集合导航属性 ICollection<Student>。这里将 Student 实体指定为泛型类型,以便 Entity Framework API 将在数据库中的 Student 表中创建一个列 GradeID。