gpt4 book ai didi

c# - 一侧没有引用属性的一对一关系

转载 作者:行者123 更新时间:2023-12-02 00:39:21 25 4
gpt4 key购买 nike

我有以下构造;有地址的人(ownsone,子实体)和有国家的地址(hasone,一对一)

public class Person
{
public Guid Id {get; set;}
public string Name {get; set;}
public Address Address {get; set;}
}

public class Address
{
public Guid Id {get; set;}
public Guid CountryId {get; set;}
public Country Country {get; set;}
}

public class Country
{
public Guid Id {get; set;}
public string CountryCode {get; set;}
}

public class EntityConfiguration<Person> where Person : class
{
public void Configure(EntityBuilder<Person> builder)
{
builder.OwnsOne(p => p.Address, addressBuilder =>
addressBuilder.HasOne(address => address.Country).WithOne();
}
}

当我运行 Add-Migration 时,我为拥有一个地址的每个实体获得了一段代码。使用自动生成的 key 等。但我想用 HasForeignKey 明确指定关系。如何做到这一点?

最佳答案

EF Core 为一对一关系提供了 2 个流畅的 API - HasForeignKeyHasPrincipalKey

与一对多 API 的主要区别是您需要显式提供通用类型参数,因为关系的主体端和从属端不能是由 HasOne/WithOne 调用确定(对于一对多,一个始终是主体,许多是从属)。这种情况下的导航属性无关紧要:

addressBuilder.HasOne(address => address.Country)
.WithOne()
.HasForeignKey<Address>(address => address.CountryId)

引用:Relationships

关于c# - 一侧没有引用属性的一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47710152/

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