【问题标题】:Polymorphic Relations in Entity Framework CoreEntity Framework Core 中的多态关系
【发布时间】:2019-06-03 14:47:04
【问题描述】:

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

多态关系允许模型属于多个其他模型 在单个关联上建模。例如,想象一下您的用户 应用程序可以“评论”帖子和视频。使用多态 关系,您可以为这两个使用单个 cmets 表 场景。

Entity Framework Core 中有类似的东西吗?我正在使用他们的代码优先方法。 谢谢

【问题讨论】:

  • 在包括 Core 在内的任何 EF 版本中都受支持。
  • 我明白了,感谢您的确认。到时候我会想办法解决的。
  • 你找到解决办法了吗?
  • @wheeler 不是真的,我回到了基本方法,即让一个模型只属于另一个模型..例如如果我有学生和老师,并且他们都有地址,我将制作一张学生地址表和一张教师地址表

标签: c# entity-framework-core


【解决方案1】:

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

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

但是,如果您想为 2 个实体(2 个父表)使用 1 个表,那么它有 1 个主要缺点,那么您不能在 Comments 表上设置 ForeginKey 约束。

进行设置的方法是在 Comments 表 1 上设置 2 列,称为 EntityType 和 LinkId。 EntityType 列将是鉴别器列,它将告诉您此评论属于帖子或视频的哪个父表。 LinkId 将告诉您评论属于 Video 表中的哪条记录

希望这能回答。

【讨论】:

  • 那你怎么设置呢?
  • @puerile 你所做的是有一个名为 Lets say Address 的基类,它具有公共属性,并且它具有 LinkType(鉴别器)和 LinkId。如果您还需要更多信息,请告诉我
【解决方案2】:

我有同样的问题,我找到了 3 个可能的解决方案:

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

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

Older question about this.

【讨论】:

    猜你喜欢
    • 2022-12-10
    • 1970-01-01
    • 2020-12-09
    • 2021-04-09
    • 2022-08-02
    • 2017-09-26
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多