实体框架核心中的多态关系

问题描述 投票:2回答:1

我过去使用过Laravel,并喜欢他们的polymorphic relations功能。

多态关系允许模型在单个关联上属于多个其他模型。例如,假设您的应用程序的用户可以“评论”帖子和视频。使用多态关系,您可以对这两种方案使用单个注释表。

Entity Framework Core中有类似的东西吗?我正在使用他们的Code First方法。谢谢

c# entity-framework-core
1个回答
2
投票

也许为时已晚,但对于有同样问题的人来说仍然有帮助。

肯定没有这样做,它被称为TPH你可以在这里找到更多关于如何做到这一点的信息https://docs.microsoft.com/en-us/ef/core/modeling/relational/inheritance

但是,如果要为2个实体(2个父表)使用1个表,则它有一个主要缺点,那么您不能在“注释”表上使用ForeginKey约束。

您可以进行设置的方法是在注释表1上有两列,名为EntityType和LinkId。 EntityType列将是Discriminator列,它将告诉您此评论属于帖子或视频的父表。并且LinkId将告诉评论所属的视频表中的哪条记录

希望这能解决它。


0
投票

我有同样的问题,我发现了3种可能的解决方案:

  1. 实现一些接口,如IComentableObject
  2. 模型评论表如下: Comments(CommentID, ..., PostID, VideoID)
  3. TPH模式适用于此?

Older question about this

© www.soinside.com 2019 - 2024. All rights reserved.