Nello script #542 abbiamo introdotto la libreria Entity Framework Plus e abbiamo visto come sfruttarla per eseguire più query in un solo comando SQL. La tecnica illustrata nello script funziona quando si eseguono query che restituiscono più record, ma non è applicabile a query che tornano un dato singolo. Un tipico esempio di questa necessità è nelle dashboard che mostrano dei valori totali o medi o contatori. Un atro esempio è rappresentato dai casi in cui mostriamo una griglia paginata e dobbiamo estrarre sia i dati della pagina che il numero totale di record o pagine.
In questo casi l'utilizzo di First, Single, Max, Count causa l'immediata esecuzione della query e quindi il concetto di Future è inapplicabile. Per ovviare al problema, Entity Framework Plus introduce i metodi DeferredFirst, DeferredSingle e così via. Grazie a questi metodi la query non viene immediatamente eseguita e quindi possiamo applicare al risultato il metodo FutureValue. Questo metodo funziona esattamente come Future con la sola differenza di lavorare con un valore singolo invece che con una lista di record.
var countFuture = query.DeferredCount().FutureValue(); var itemsFuture = await query .Skip((pageIndex - 1) * pageSize) .Take(pageSize) .Future(); var items = await itemsFuture.ToList(); var count = countFuture.Value;
In questo esempio, viene creato un Future per contare i record totali di una query LINQ e successivamente viene creato u future per estrarre i dati di una pagina. Quando enumeriamo la prima query per estrarre i dati della pagina, viene eseguita anche la query che conta il numero totale di record estraendo così i dati in un comando solo e ottimizzando le prestazioni.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Configuratione e utilizzo .NET Aspire CLI
Creare una file based app con C#
Gestire trasferimenti cloud con Azure Storage Mover
Gestire gli errori nelle Promise JavaScript con try()
Utilizzo delle stepped value functions nel CSS
Dallo sviluppo locale ad Azure con .NET Aspire
Esporre un server MCP esistente con Azure API Management
Response streaming con Blazor e .NET 10
Ottimizzare gli indici con Automatic Index Compaction in Azure SQL Database
Recuperare le subissue e il loro stato di completamento in GitHub
Impostare automaticamente l'altezza del font tramite CSS
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata




