Suponha que temos este modelo:
public class Tiers
{
public List<Contact> Contacts { get; set; }
}
e
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; }
}
Com EF7 eu gostaria de recuperar todos os dados da tabela Tiers, com dados da tabela Contact, da tabela Titre, da tabela TypeContact e assim por diante ... com uma única instrução. Com a API Include / ThenInclude, posso escrever algo assim:
_dbSet
.Include(tiers => tiers.Contacts)
.ThenInclude(contact => contact.Titre)
.ToList();
Mas depois da propriedade Titre, não posso incluir outras referências como TypeContact, Langue, Fonction ... O método Include sugere objetos Tiers e ThenInclude sugere um objeto Titre, mas não um objeto Contact. Como posso incluir todas as referências da minha lista de contatos? Podemos conseguir isso com uma única instrução?
fonte
var contacts = _dbSet.Include(tiers => tiers.Contacts);
contacts.ThenInclude(contact => contact.Titre);
contacts.ThenInclude(contact => contact.TypeContact);
contacts.ThenInclude(contact => contact.Langue);
não funcionaria?Queryable
objetos a cada vez e nunca os avaliaria.contacts
teria apenas o valor original que você atribuiu a ele.tiers.Contacts
for umList<T>
? como você especificaria o item então?Para completar:
Também é possível incluir propriedades aninhadas diretamente via
Include
, caso não sejam propriedades de coleção, como:fonte