Załóżmy, że mamy ten model:
public class Tiers
{
public List<Contact> Contacts { get; set; }
}
i
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; }
}
Z EF7 chciałbym pobrać wszystkie dane z tabeli Tiers, z danymi z tabeli Contact, z tabeli Titre, z tabeli TypeContact i tak dalej ... za pomocą jednej instrukcji. Z Include / ThenInclude API mogę napisać coś takiego:
_dbSet
.Include(tiers => tiers.Contacts)
.ThenInclude(contact => contact.Titre)
.ToList();
Ale po właściwości Titre nie mogę dołączyć innych referencji, takich jak TypeContact, Langue, Fonction ... Metoda Include sugeruje obiekty Tiers, a ThenInclude sugeruje obiekt Titre, ale nie obiekt Contact. Jak mogę dołączyć wszystkie referencje z mojej listy kontaktów? Czy możemy to osiągnąć za pomocą jednej instrukcji?
źródło
var contacts = _dbSet.Include(tiers => tiers.Contacts);
contacts.ThenInclude(contact => contact.Titre);
contacts.ThenInclude(contact => contact.TypeContact);
contacts.ThenInclude(contact => contact.Langue);
czy to nie zadziała?Queryable
każdym razem tworzysz nowe obiekty i nigdy ich nie oceniasz .contacts
miałby tylko oryginalną wartość, którą mu przypisałeś.tiers.Contacts
jestList<T>
? jak określiłbyś przedmiot?Ze względu na kompletność:
Możliwe jest również dołączenie zagnieżdżonych właściwości bezpośrednio przez,
Include
jeśli nie są one właściwościami kolekcji, jak na przykład:źródło