Fluent API 表脚手架 - HasBaseType

ser*_*0ne 3 c# entity-framework fluent entity-framework-core ef-fluent-api

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

在我的 Fluent API 配置中,我有:

builder
    .Ignore<AccountModel>();

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

builder
    .Entity<Teacher>()
    .HasBaseType<AccountModel>()
    .ToTable("Teachers");
Run Code Online (Sandbox Code Playgroud)

但是,当 EF 构建迁移并生成新数据库时,我得到了一个AccountModel表,但没有一个StudentsorTeachers表。是什么赋予了?

Mik*_*ind 6

目前,Entity Framework Core 仅支持用于映射继承的 Table Per Hierarchy (TPH) 模式 ( http://www.learnentityframeworkcore.com/inheritance ),这就是迁移结果为所有类型的一个表的原因。

每个具体类型的表(TPC) 都在积压工作中,并且正在积极考虑中,每个类型(TPT) 模式也是如此。