我可以在每个层次结构表继承表中的同一表键中拥有两个外键吗?

核心2.2:

我有一个按层次结构的表(TPH)继承,并且我有从成员身份继承的客户和代理。现在,我尝试创建一个采购订单,并想将它们的成员ID都添加为外键,但是我不能,因为那将意味着在我的代码第一个模型中将MemberID的外键加倍:

    [ForeignKey("CustomerModel")]
    public string MemberId { get; set; }

    [ForeignKey("AgentModel")]
    public string MemberId { get; set; }

我是否必须将它们分成两个表而不是使用继承?例如,我可以将其中之一从MemberId重命名为AgentID还是需要与外键名称匹配?

yezhunan11 回答:我可以在每个层次结构表继承表中的同一表键中拥有两个外键吗?

在数据库中,很少有几个类似的条目。就像来自同一表的多个外键。在这些罕见的情况下,它们也不是完整的N:M关系,因此无法(也不应该)那样解决。对于这种罕见的情况,您有一个有效的例子。毕竟,在任何给定的交易中,代理商也可以是客户。包括他也是代理人的人。

我总是尝试从表的外键工作到列名。但是在这种情况下,您可以在其中使用该功能。

public string Fk_CustomerMemberId { get; set; }

public string Fk_AgentMemberId { get; set; }

但是我不知道如何获得EF以给定不同的名称正确地映射它们。我猜您将其放入[ForeignKey("CustomerModel")]属性中。也许像("CustomerModel.MemberID")("CustomerModel","MemberID")之类的东西?

本文链接:https://www.f2er.com/3130559.html

大家都在问