Domanda

Sto usando LINQ per paging dei dati nel mio sito. Attualmente sto usando Skip () e prendere () per eseguire il paging. Ora voglio mettere in cache i dati utilizzando dipendenze della cache in modo che la cache invalida se i dati vengono modificati. Tuttavia SQL Server è interrogazione notifiche non supportano l'espressione TOP. Ci sono modi alternativi per interrogare una serie di paging dei dati con LINQ che non generano TOP? O un altro modo per memorizzare nella cache questi dati in modo che invalida?

È stato utile?

Soluzione

Tirare i dati in due passaggi:

// step1: get the IDs of the items in the current page.
List<int> customerIds = db.Customers
  .Where(filter)
  .OrderBy(c => c.FirstName)
  .ThenBy(c => c.CustomerID)
  .Select(c => c.CustomerID)
  .Skip(200)
  .Take(20)
  .ToList();

// step2: get the items for that page
List<Customer> customers = db.Customers
  .Where(c => customerIds.Contains(c.CustomerID))
  .ToList();

Altri suggerimenti

Cache l'intero set di risultati, e impostare lo SqlDependancy a questo.

Leggi l'intero set dalla cache, e quindi utilizzare Skip / Take su questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top