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

时间:2017-05-11 09:08:30

标签: c# entity-framework-core

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

  

多态关系允许模型属于多个其他模型   关于单一关联的模型。例如,想象一下你的用户   申请可以"评论"帖子和视频。使用多态   关系,您可以使用单个注释表来实现这两者   场景。

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

2 个答案:

答案 0 :(得分:2)

也许为时已晚,但对于有相同问题的人还是有帮助的。

肯定会做不到,它被称为TPH,您可以在https://docs.microsoft.com/en-us/ef/core/modeling/relational/inheritance上找到有关如何做的更多信息。

但是,如果要对2个实体(2个父表)使用1个表,则它有1个主要缺点,那么在Comments表上就没有ForeginKey约束。

您可以通过在注释表1上有2列EntityType和LinkId进行设置。 EntityType列将是Discriminator列,它将告诉您此评论属于帖子或视频属于哪个父表。然后LinkId会告诉您Comment属于Video表中的哪个记录

希望这能回答它。

答案 1 :(得分:0)

我遇到了同样的问题,并且找到了3种可能的解决方案:

  1. 实现某些接口,例如IComentableObject
  2. 模型注释表如下:

    Comments(CommentID, ..., PostID, VideoID)
    
  3. TPH模式在这里适用吗?

Older question about this