我的项目 Student
和 Teacher
中有两个实体共享一个公共(public)基类 AccountModel
。基类包含学生和教师都需要的属性(从语义上讲,学生和教师都是帐户持有人,为了良好的实践,这可以防止违反 DRY 原则)
在我的 Fluent API 配置中我有:
builder
.Ignore<AccountModel>();
builder
.Entity<Student>()
.HasBaseType<AccountModel>()
.ToTable("Students");
builder
.Entity<Teacher>()
.HasBaseType<AccountModel>()
.ToTable("Teachers");
但是,当 EF 构建迁移并生成新数据库时,我得到一个 AccountModel
表,但不是 Students
或 Teachers
表。给了什么?
最佳答案
目前,Entity Framework Core 仅支持用于映射继承的 Table Per Hierarchy (TPH) 模式 (http://www.learnentityframeworkcore.com/inheritance),这就是为什么迁移会导致所有类型都在一个表中。
Table per concrete type (TPC) 处于积压状态,正在积极考虑中,Table Per Type 也是如此。 (TPT) 模式。
关于c# - Fluent API 表脚手架 - HasBaseType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41184268/