Incluir varias referencias en el segundo nivel.

asp.net-core-mvc entity-framework-core

Pregunta

Supongamos que tenemos este modelo:

public class Tiers
{
    public List<Contact> Contacts { get; set; }
}

y

public class Tiers
{
    public List<Contact> Contacts { get; set; }
}

Con EF7 me gustaría recuperar todos los datos de la tabla de niveles, con los datos de la tabla de contactos, de la tabla de títulos, de la tabla de contactos de tipo y así sucesivamente ... con una sola instrucción. Con Include / ThenInclude API puedo escribir algo como esto:

public class Tiers
{
    public List<Contact> Contacts { get; set; }
}

Pero después de la propiedad Titre, no puedo incluir otras referencias como TypeContact, Langue, Fonction ... El método Include sugiere un objeto Tiers, y ThenInclude sugiere un objeto Titre, pero no un objeto Contact. ¿Cómo puedo incluir todas las referencias de mi lista de contactos? ¿Podemos lograr esto con una sola instrucción?

Respuesta aceptada

.ThenInclude() encadenará la última. .ThenInclude() o la última. .Include() (la que sea más reciente) para acceder a múltiples niveles. Para incluir varios hermanos en el mismo nivel, solo use otra cadena .Include() . El formato correcto del código puede mejorar drásticamente la legibilidad.

_dbSet
    .Include(tiers => tiers.Contacts).ThenInclude(contact => contact.Titre)
    .Include(tiers => tiers.Contacts).ThenInclude(contact => contact.TypeContact)
    .Include(tiers => tiers.Contacts).ThenInclude(contact => contact.Langue);
    // etc.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué