Fluent API Table 脚手架 - HasBaseType

Fluent API Table Scaffolding - HasBaseType

我的项目中有两个实体 StudentTeacher,它们共享一个公共基础 class、AccountModel。基础 class 包含学生和教师都需要的属性 (从语义上讲,学生和教师都是帐户持有人,为了良好的实践,这可以防止违反 DRY 原则)

在我的 Fluent API 配置中我有:

builder
    .Ignore<AccountModel>();

builder
    .Entity<Student>()
    .HasBaseType<AccountModel>()
    .ToTable("Students");

builder
    .Entity<Teacher>()
    .HasBaseType<AccountModel>()
    .ToTable("Teachers");

但是当 EF 构建迁移并生成新数据库时,我得到一个 AccountModel table,但不是 StudentsTeachers table .给出了什么?

目前,Entity Framework Core 只支持 Table Per Hierarchy (TPH) 映射继承模式 (http://www.learnentityframeworkcore.com/inheritance),这就是为什么迁移会导致一个 table 适用于所有类型。

Table per concrete type (TPC) is on the backlog and is actively being considered, as is the Table Per Type (TPT) 模式。