Ho il seguente codice per eseguire una ricerca full-text. Crea una query, ottiene il numero totale di righe restituite da quella query e recupera le righe effettive solo per la pagina corrente.Esecuzione di due query in un singolo round trip nel database
// Create IQueryable
var query = from a in ArticleServerContext.Set<Article>()
where a.Approved
orderby a.UtcDate descending
select a;
// Get total rows (needed for pagination logic)
int totalRows = query.Count()
// Get rows for current page
query = query.Skip((CurrentPage - 1) * RowsPerPage).Take(RowsPerPage);
Questo funziona bene, ma richiede due round trip al database. Nell'interesse dell'ottimizzazione del codice, esiste un modo per rielaborare questa query in modo che abbia avuto solo un round trip nel database?
A mio parere No. Se non si desidera memorizzare tutte le righe in memoria, naturalmente. –
Non penso che tu possa farlo in un round trip, l'unico modo che posso pensare è ripensare la tua impaginazione al lavoro senza dover ottenere un conteggio totale – JanR
Completamente d'accordo con @JanR. L'unico modo per ottenere ciò è utilizzare la paginazione in una query. Se la query risultato restituisce "null", non ci sono dati da mostrare. –