Inclure plusieurs références sur le deuxième niveau
Supposons que nous disposons de ce modèle :
public class Tiers
{
public List<Contact> Contacts { get; set; }
}
et
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; }
}
Avec EF7 je voudrais récupérer toutes les données dans les Niveaux de la table, avec les données de la table Contact, à partir du Titre de la table, de la TypeContact table et ainsi de suite ... avec une seule instruction. Avec Include/ThenInclude API je peux écrire quelque chose comme ceci :
_dbSet
.Include(tiers => tiers.Contacts)
.ThenInclude(contact => contact.Titre)
.ToList();
Mais après le Titre de propriété, je ne peux pas inclure d'autres références comme TypeContact, la Langue, la Fonction ... il y a la méthode suggère un des Niveaux les objets, et ThenInclude suggère un Titre de l'objet, mais pas un objet de Contact. Comment puis-je inclure toutes les références de ma liste de Contact? Peut-on réaliser cela avec une seule instruction?
Vous devez vous connecter pour publier un commentaire.
.ThenInclude()
va de la chaîne d'arrêt de la dernière.ThenInclude()
ou le dernier.Include()
(selon la date la plus récente) pour la tirer à de multiples niveaux. Pour inclure plusieurs frères et sœurs au même niveau, il suffit d'utiliser un autre.Include()
de la chaîne. Le formatage du code de droit peut considérablement améliorer la lisibilité.var contacts = _dbSet.Include(tiers => tiers.Contacts);
contacts.ThenInclude(contact => contact.Titre);
contacts.ThenInclude(contact => contact.TypeContact);
contacts.ThenInclude(contact => contact.Langue);
ne Serait-ce pas le travail?Queryable
objets à chaque fois et jamais à leur évaluation.contacts
n'aurait jamais la valeur d'origine que vous lui avez assignée.tiers.Contacts
est unList<T>
? comment vous spécifiez l'article alors?À des fins d'exhaustivité:
Il est également possible d'inclure des propriétés imbriquées directement via
Include
dans le cas où ils ne sont pas des propriétés de collection comme suit: