gpt4 book ai didi

.net-core - EF Core 一对一或零关系

转载 作者:行者123 更新时间:2023-12-02 23:34:54 25 4
gpt4 key购买 nike

我有人员和地址。地址是可选的。请看下面的代码

class Person
{
[Key]
public int PersonID { get; set; }
public string Name { get; set; }

public Address Address { get; set; }

}

class Address
{
[Key, ForeignKey("Person")]
public int PersonID { get; set; }

public string City { get; set; }
}

注册码如下:

modelBuilder.Entity<Address>(entity =>
{
entity.HasKey(z => z.PersonID);
entity.HasOne(p => p.Person)
.WithOne(a => a.Address)
.HasForeignKey<Person>(a => a.PersonID);
});

我应该如何更改映射以使地址可选?

最佳答案

这里

.HasForeignKey<Person>(a => a.PersonID)

您告诉 EF Person.PersonID 将是 Address 的 FK(外键),即 Person 是依赖的并且正在引用主体地址

应该是相反的:

.HasForeignKey<Address>(a => a.PersonID)

这样,Person(主体)将有 0..1 Address,而 Address(从属)将有 1 Person(因为 PersonId 既是 PK 又是 FK)。

这称为共享主键关联,是在 EF Core 中建模一对零或一对关系的标准(默认)方式。

有关详细信息,请参阅 Relationships .

关于.net-core - EF Core 一对一或零关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54985032/

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