Ho sperimentato un po 'con EntityFramework e, dopo aver affrontato l'errore qui sotto, ho provato a utilizzare ThenInclude per risolverlo.
L'espressione "[x] .ModelA.ModelB" passata all'operatore Includi non può essere associata
Ma ora sembra che manchi una certa comprensione del perché ha risolto il problema
Qual è la differenza tra questo:
.Include(x => x.ModelA.ModelB)
E questo:
.Include(x => x.ModelA).ThenInclude(x => x.ModelB)
"Includi" funziona bene con l'elenco di oggetti ma se è necessario ottenere dati multilivello, "ThenInclude" è la soluzione migliore. Lasciami spiegare con un esempio. Supponiamo che abbiamo due entità: Organizzazione e Clienti,
public class Company
{
public string Name { get; set; }
public string Location { get; set; }
public List<Client> Clients {get;set;}
}
public class Client
{
public string Name { get; set; }
public string Domains { get; set; }
public List<string> CountriesOfOperation { get; set; }
}
Ora, se vuoi solo aziende e l'intero elenco di clienti di quella società, puoi semplicemente usare "Includi",
using (var context = new YourContext())
{
var customers = context.Companies
.Include(c => c.Clients)
.ToList();
}
Ma se si desidera la società e "CountriesOfOperation" come dati correlati, è possibile utilizzare "ThenInclude" dopo aver incluso i clienti come di seguito,
using (var context = new MyContext())
{
var customers = context.Companies
.Include(i => i.Clients)
.ThenInclude(a => a.CountriesOfOperation)
.ToList();
}