ef core 中的 TPH 模式用于不同实体之间的共享表

Posted

技术标签:

【中文标题】ef core 中的 TPH 模式用于不同实体之间的共享表【英文标题】:TPH pattern in ef core for a shared table between different entities 【发布时间】:2021-12-24 07:15:39 【问题描述】:

我有一个问题。 请假设我们有不同的实体,例如类别、博客、视频……并且每个实体都有自己的 cmets。如何仅使用一个 FK 为所有这些实体使用一个注释表?是 TPH 模式吗?我如何在 codefirst 方法中实现它? 类似于 Comments(CommentID, ..., PostID, VideoID) 到 Comments(CommentID) 的东西。 提前致谢。

【问题讨论】:

【参考方案1】:

您可以通过使用多对多关系或为关系单独链接实体来消除 cmets 表中的 FK。

【讨论】:

我不想为每个表都有 fk,因为 fk 有几个空值考虑到我们在 cmets 表中有 100 条类别记录,fk 的其余部分(如视频或博客)在所有 100 条中都为空记录。我只想为所有表格设置一个 fk,并使用鉴别器之类的东西来识别哪个评论是针对哪个表格的

以上是关于ef core 中的 TPH 模式用于不同实体之间的共享表的主要内容,如果未能解决你的问题,请参考以下文章

嵌套 tph 继承成员的 ef-core 负载收集属性

更新子记录 EF Core 3.0 中的错误实体之间的关联已被切断,但关系被标记为“必需”

EF Core开发模式之Code First

Entity Framework 4.3 - TPH 映射和迁移错误

EF Core/SQL 根据条件加入不同的实体

即使在显式包含之后,EF Core“InvalidOperationException:包含已用于非实体可查询”的导航属性也是如此