Sto utilizzando Entity Framework Core (EF) per la costruzione di modelli per un progetto.
Ora voglio salvare le aziende e la loro gerarchia. Pertanto ho casi seguenti:
La reazione da molti a molti non è il problema. Il vero problema è la combinazione di molti a molti e l'autoreferenzialità (stesso nome di tabella).
Non ho idea di come scrivere un modello con quei casi. Spero che qualcuno possa aiutarmi.
In The Model Class (Passeggero nel mio caso in cui più passeggeri possono essere correlati / collegati a uno specifico Passeggero ..) Definire la relazione come di seguito:
Passenger.cs
public int? LinkedToPassengerId { get; set; }
[ForeignKey("LinkedToPassengerId")]
public virtual Passenger LinkedToPassenger { get; set; }
public virtual ICollection<Passenger> Passengers { get; set; }
Quindi, nella classe DBContext, utilizzare la seguente API Fluent per definire la relazione Self-Ref one to many all'interno del metodo 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);
Infine, da qualsiasi metodo di controllo è possibile leggere le righe correlate / collegate per qualsiasi Passeggero utilizzando il seguente 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);**