Anche se qualcuno afferma il contrario, non cito la fonte, abbiamo a disposizione più metodi per caricare entità collegate. In tutti questi post dedicati all'Entity Framework ho fatto sempre esempio che riguardavano più tabelle (~entità) collegate.
Possiamo fare in modo che sia lo stesso Entity Framework a caricare con una query il tutto grazie a Include:
var coll=from c in EntityContext.Articles.Include("Authors")
select c;
foreach (var item in coll)
{
Response.Write(item.Title);
Response.Write(item.Authors.Name);
}
Oppure possiamo forzare il caricamente delle entità collegate, in questo caso Authors, ad ogni richiesta della stessa:
var coll=from c in EntityContext.Articles
select c;
foreach (var item in coll)
{
Response.Write(item.Title);
if (item.AuthorsReference.IsLoaded) // Controlla se già presente in memoria
Response.Write(item.AuthorsReference.Value.Name);
else
{
item.AuthorsReference.Load();
Response.Write(item.Authors.Name);
}
}
In quest'ultimo caso all'inizio viene eseguita una query che richiede solo la lista degli Articles. Quindi viene verificato che l'entità per gli Authors non sia già presente in memoria; se presente la visualizza direttamente, altrimenti esegue una query al database.
Il numero di query inviate al database è N+(numero di autori richiesti differenti). Ipoteticamente, se tutti gli articoli fossero collegati ad un solo autore, il numero di query inviate al database sarebbero due.
PS: scusate la brevità ma il tempo è tiranno. O Tiràno?
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- C# e Net 6 in Kubernetes con Prometheus e Grafana, il 12 gennaio 2022 alle 21:58
- Snaturare Kubernetes evitando i custom container Docker, il 6 gennaio 2022 alle 19:40
- Provando Kaniko in Kubernetes come alternativa a Docker per la creazione di immagini, il 18 dicembre 2021 alle 20:11
- Divertissement con l'OpenID e Access Token, il 6 dicembre 2021 alle 20:05
- Operator per Kubernetes in C# e Net Core 6., il 28 novembre 2021 alle 19:44
- RBAC in Kubernetes verso gli operator, il 21 novembre 2021 alle 20:52