Sto utilizzando Entity Framework per ottenere il numero totale di righe per una tabella. Voglio semplicemente il conteggio delle righe, nessuna clausola where o qualcosa del genere. La seguente query funziona, ma è lenta. Ci sono voluti circa 7 secondi per restituire il conteggio di 4475.Ottenere il numero totale di righe in Entity Framework
La mia ipotesi qui è che sta iterando attraverso l'intera tabella, proprio come funziona il metodo di estensione IEnumerable.Count().
C'è un modo per ottenere il numero totale di righe "rapidamente"? C'è un modo migliore?
public int GetLogCount()
{
using (var context = new my_db_entities(connection_string))
{
return context.Logs.Count();
}
}
come contare righe all'interno EntityFramework senza caricare i contenuti? http://stackoverflow.com/questions/890381/how-to-count-rows-within-entityframework-without-loading-contents – sevdalone
Assicurarsi che context.Logs sia un DbSet, IDbSet o un IQueryable, non un IEnumerable. Se è un oggetto IEnumerable, verrà recuperata e contata l'intera tabella. Se è un IQueryable, la query verrà generata per contare le righe nel database che sarà qualcosa come "SELECT COUNT (*) FROM dbo.Logs" (Se è un IdbSet o DbSet, sarà trattato come un IQueryable) – Grax