Fluent API表脚手架 - HasBaseType

时间:2016-12-16 12:18:29

标签: c# entity-framework entity-framework-core fluent 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");

但是当EF支持迁移并生成新数据库时,我得到一个AccountModel表,而不是StudentsTeachers表。是什么给了什么?

1 个答案:

答案 0 :(得分:3)

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

Table per concrete type(TPC)正在积压中,正在考虑中,Table Per Type(TPT)模式也是如此。