【问题标题】:EF4 Self referencing with association 0..1 -> 1EF4 自引用关联 0..1 -> 1
【发布时间】:2011-07-06 08:10:17
【问题描述】:

有很多关于自引用问题的阅读,但我似乎找不到我的问题的答案。

假设我有一个人类(A),我希望A有一个伙伴,另一个人类(B)。自然,这意味着 B 在人类 A 中有一个伙伴。你会如何解决这个问题?理想情况下,我只需要做:

humanA.Partner = humanB;

humanB 会自动让 humanA 成为合作伙伴。

我原以为我可以创建一个人类实体,并添加一个关联,例如:

End1 实体:人类,多重性:0..1,导航属性:合作伙伴

End2 实体:人类,多重性:0..1

因此,每个人都有零个或一个合作伙伴是人类。

感谢您的宝贵时间。

【问题讨论】:

    标签: c# entity-framework entity-framework-4 data-modeling


    【解决方案1】:

    1:0..1 映射只有在entities "share" primary key 时才有可能。这意味着当相关的实体 FK 也是它的 PK 时。所以自引用 1:0..1 不能存在。我认为你甚至不能直接将它映射到数据库中。

    【讨论】:

    • 两个实体共享相同的密钥(两个人类实体)。 Partner 只是导航属性名称。
    • @Morten:不,他们没有。在这种类型的关系中,它们必须共享 PK 值 - 显然,您可以在一个表中拥有两个具有相同 PK 值的实体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多