gpt4 book ai didi

c# - EntityFrameworkCore 映射关系

转载 作者:太空宇宙 更新时间:2023-11-03 22:51:03 25 4
gpt4 key购买 nike

我有以下两个实体:

public class Company
{
public Guid Id { get; set; }
public string Name { get; set; }

public virtual ICollection<Address> Addresses { get; set; }
}

public class Address
{
public Guid Id { get; set; }
public string Town { get; set; }
public string Country { get; set; }
}

这对应于两个数据库表:

Company:
Id uniqueidentifier
Name varchar

Address:
Id uniqueidentifier
Town varchar
Country varchar
RelationId uniqueidentifier

RelationId 是将链接存储回 CompanyId 的外键。

不能更改类或表。

我正在尝试找出如何在代码优先 EFCore 中表示此构造。

    protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>().ToTable("Companies");
modelBuilder.Entity<Address>().ToTable("Addresses");

modelBuilder.Entity<Company>().HasKey(c => c.Id);
modelBuilder.Entity<Address>().HasKey(c => c.Id);

???????????????????????
}

我在上面的代码中缺少什么来防止创建 CompanyId 外键并改用“RelationId”。

最佳答案

创建一个 Guid RelationId 和 Company Address 中的公司属性,由@TanvirArjel 设计并使用以下流畅配置:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
.....

modelBuilder.Entity<Company>()
.HasOne(c => c.Address)
.WithOne(a => a.Company)
.HasForeignKey(a => a.RelationId);
}

如果一个地址可以有多个公司,更改WithOne通过 WithMany公司属性(property)类型为ICollection<Company>

关于c# - EntityFrameworkCore 映射关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47290231/

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