gpt4 book ai didi

entity-framework - 一对零/一关系(代码优先)

转载 作者:行者123 更新时间:2023-12-04 17:56:51 24 4
gpt4 key购买 nike

我正在尝试这门课:

public class Person
{
public int PersonID { get; set; }
public string Name { get; set; }
public int SpouseID { get; set; }
public virtual Person Spouse { get; set; }
}

关系是:
一个人有一个或零个配偶/
一个配偶有一个必需的人

是否可以在 Fluent API 中构建此模型?

谢谢。

最佳答案

不幸的是,不可能建立真正的自引用一对一关系,因为目前 EF 不支持唯一键。使这个真正的自引用一对一SpouseID必须标记为唯一。 EF 仅允许对主键进行一对一(从属实体中的主键也必须是主体实体的外键),这意味着自引用一对一关系将以 PersonID <-> PersonID 结束。 = 两个相同的实体 PersonID在单个表中。这是不可能的,因为 PersonID是主键,它必须是唯一的。

您可以将其作为一对多处理,并且如您所知仅公开单个导航属性:

modelBuilder.Entity<Person>()
.HasOptional(p => p.Spouse)
.WithMany()
.HasForeingKey(s => s.SpouseID);

要在数据库中强制执行一对一关系,您将添加 custom database initializer并在 SpouseID 上手动创建唯一索引柱子。

问题是它只是一种导航方式,因此您可以从 Spouse 中获取 Person 的配偶。你无法回到丈夫身边。

关于entity-framework - 一对零/一关系(代码优先),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7032065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com