C# 实体框架核心中的自引用多对多关系

C# 实体框架核心中的自引用多对多关系,c#,visual-studio-2015,many-to-many,entity-framework-core,self-referencing-table,C#,Visual Studio 2015,Many To Many,Entity Framework Core,Self Referencing Table,我正在使用实体框架核心(EF)为项目构建模型 现在我想拯救公司和他们的等级制度。 因此,我有以下情况: 子公司(子公司)有任意数量的子女和任意数量的父母 母公司有任意数量的子女,也有任意数量的父母 多对多的创造并不是问题所在。真正的问题是多对多和自引用(相同的表名)的组合 我不知道如何用这些案例编写模型。我希望任何人都能帮助我。在模型类中(在我的情况下,多个乘客可以关联/链接到一个特定的乘客…)定义关系如下: 乘客安全 public int? LinkedToPassengerId { ge

我正在使用实体框架核心(EF)为项目构建模型

现在我想拯救公司和他们的等级制度。 因此,我有以下情况:

  • 子公司(子公司)有任意数量的子女和任意数量的父母
  • 母公司有任意数量的子女,也有任意数量的父母
多对多的创造并不是问题所在。真正的问题是多对多和自引用(相同的表名)的组合

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

在模型类中(在我的情况下,多个乘客可以关联/链接到一个特定的乘客…)定义关系如下:

乘客安全

public int? LinkedToPassengerId { get; set; }
[ForeignKey("LinkedToPassengerId")]
public virtual Passenger LinkedToPassenger { get; set; }
public virtual ICollection<Passenger> Passengers { get; set; }
公共int?LinkedToPassengerId{get;set;} [ForeignKey(“LinkedToPassengerId”)] 公共虚拟乘客链接禁止乘客{get;set;} 公共虚拟ICollection乘客{get;set;} 然后在DBContext类中,使用以下Fluent API在OnModelCreating方法中定义自引用一对多关系:

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);
modelBuilder.Entity()
.有许多(e=>e.乘客)
.WithOne(e=>e.LinkedToPassenger)//每个乘客都指向他的父母 .HasForeignKey(e=>e.LinkedToPassengerId);
最后,通过任何控制器方法,您可以使用以下LINQ读取任何乘客的相关/链接行:

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);**
var linkpasss=新列表();
var Passes=_context.passers.Include(c=>c.passers)。其中(m=>m.ID==ID);
foreach(乘客TMPPAS通行证)
foreach(tmpPass.PASSERS中的乘客tmpPass2)
LinkPass.Add(tmpPass2)**

为什么你不能处理M:M?你所说的
自引用(相同的表名)
是什么意思?到目前为止,我还没有找到一种使用EF core的方法。对于自引用(相同的表名),我的意思是不动产(公司)中的两个实体都是相同的表/模型/实体。您需要知道如何使用EF core处理M:M吗?你必须提供更多的信息。否则我们如何帮助你?你的型号代码是什么?我知道如何处理m:m关系。在自引用的情况下,我的方法不起作用,因为实体是相同的。你能把模型的代码放进去吗?