gpt4 book ai didi

c# - Entity Framework Core 中的自引用多对多关系

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

我正在使用 Entity Framework Core (EF) 为项目构建模型。

现在我想保存公司及其等级制度。因此我有以下情况:

  • 一家子公司(Child)有任意数量的子公司和任意数量的父公司。
  • 一家母公司有任意数量的子公司和任意数量的母公司。

多对多关系不是问题。真正的问题是多对多的组合和自引用(相同的表名)。

我不知道如何用这些案例编写模型。我希望任何人都可以帮助我。

最佳答案

在模型类(在我的案例中为 Passenger,其中多个乘客可以与特定的一个 Passenger 相关/链接 ..)定义如下关系:

乘客.cs

public int? LinkedToPassengerId { get; set; }
[ForeignKey("LinkedToPassengerId")]
public virtual Passenger LinkedToPassenger { get; set; }
public virtual ICollection<Passenger> Passengers { get; set; }

然后在 DBContext 类中使用以下 Fluent API 在 OnModelCreating 方法中定义 Self-Ref 一对多关系:

modelBuilder.Entity<Passenger>() <BR>
.HasMany(e => e.Passengers) <BR>
.WithOne(e => e.LinkedToPassenger) //Each passenger points back to his parent Passenger
.HasForeignKey(e => e.LinkedToPassengerId);

最后,您可以使用以下 LINQ 从任何 Controller 方法读取任何乘客的相关/链接行:

var linkPasses = new List<Passenger>();
var Passes = _context.Passengers.Include(c => c.Passengers).Where(m => m.ID == id);
foreach(Passenger tmpPass in Passes)
foreach(Passenger tmpPass2 in tmpPass.Passengers)
linkPasses.Add(tmpPass2);**

关于c# - Entity Framework Core 中的自引用多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40111282/

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