c# - Fluent API 表脚手架 - HasBaseType

标签 c# entity-framework entity-framework-core fluent ef-fluent-api

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

在我的 Fluent API 配置中我有:

builder
    .Ignore<AccountModel>();

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

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

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

最佳答案

目前,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/

相关文章:

c# - 将自定义调试信息传递给 Microsoft bot 框架模拟器

c# - 将 WHERE sql 子句拆分为数组

c# - 基础连接已关闭。无法与远程服务器建立信任关系

EF 中的 LINQ 查询 - 多对多和交叉联接

c# - 如何在 EF Core Code First 中自定义迁移生成?

c# - 运算符 '||' 不能应用于类型 'object' 和 'bool' 的操作数

asp.net-mvc - View 未将正确的信息传递给 Controller

C# 报表向导和 Entity Framework

c# - 使用 ODataQueryOptions 时无法应用 $select

.net-core - 找不到方法 : 'System.Reflection.MethodInfo Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.get_SelectAsyncMethod()'