Entity Framework Core 数据库关系、配置与迁移全解析
1. 关系与外键
在 Entity Framework Core 中,引用其他实体类一个或多个实例的属性会被自动视为导航属性,这使得我们能够在实体之间创建关系,例如 1:1 和 1:N 这样的主从关系。
对于集合,开发者可以使用 ICollection
或基于它的其他接口(如 IList
),以及任何实现 ICollection<T>
的类(如 List<T>
或 HashSet<T>
)。Entity Framework Core 会在数据库架构的表中自动创建外键列,具体位置如下:
- 在 1:N 关系的 N 侧。
- 在 1:0/1 关系的一侧。
外键列的名称由导航属性名加上相关实体类的主键名组成。对于每个外键列,Entity Framework Core 会在数据库中自动生成一个索引。
例如,在将 AircraftType
实体类型引入示例时, Flight
表中会创建外键列 AircraftTypeTypeId
。若想使用更简单的名称,可以在导航属性上使用注解 [ForeignKey("AircraftTypeId")]
。在 Fluent API 中,操作会复杂一些,需要先使用 HasOne()
、 HasMany