Angenommen, wir haben dieses Modell:
public class Tiers
{
public List<Contact> Contacts { get; set; }
}
und
public class Contact
{
public int Id { get; set; }
public Tiers Tiers { get; set; }
public Titre Titre { get; set; }
public TypeContact TypeContact { get; set; }
public Langue Langue { get; set; }
public Fonction Fonction { get; set; }
public Service Service { get; set; }
public StatutMail StatutMail { get; set; }
}
Mit EF7 möchte ich alle Daten aus der Tiers-Tabelle abrufen, mit Daten aus der Contact-Tabelle, aus der Titre-Tabelle, aus der TypeContact-Tabelle usw. ... mit einer einzigen Anweisung. Mit der Include / ThenInclude-API kann ich so etwas schreiben:
_dbSet
.Include(tiers => tiers.Contacts)
.ThenInclude(contact => contact.Titre)
.ToList();
Nach der Titre-Eigenschaft kann ich jedoch keine anderen Referenzen wie TypeContact, Langue, Fonction ... Include-Methode ein Tiers-Objekt vorschlagen, und ThenInclude schlägt ein Titre-Objekt vor, jedoch kein Contact-Objekt. Wie kann ich alle Referenzen aus meiner Kontaktliste aufnehmen? Können wir dies mit einer einzigen Anweisung erreichen?
quelle
var contacts = _dbSet.Include(tiers => tiers.Contacts);
contacts.ThenInclude(contact => contact.Titre);
contacts.ThenInclude(contact => contact.TypeContact);
contacts.ThenInclude(contact => contact.Langue);
Würde das nicht funktionieren?Queryable
jedes Mal neue Objekte erstellen und diese niemals bewerten.contacts
würde immer nur den ursprünglichen Wert haben, den Sie ihm zugewiesen haben.Der Vollständigkeit halber:
Es ist auch möglich, verschachtelte Eigenschaften direkt über einzuschließen,
Include
falls es sich nicht um Auflistungseigenschaften wie folgt handelt :quelle