Question

J'utilise LINQ pour les données pagination dans mon site. J'utilise actuellement Skip () et Take () pour effectuer la recherche de personnes. Maintenant, je veux mettre en cache les données à l'aide des dépendances de cache afin que le cache annulerait si les modifications de données. Cependant SQL Server est notifications requête ne prennent pas en charge l'expression TOP. Y a-t-il des autres moyens d'interroger un ensemble paginée de données avec LINQ qui ne génèrent pas de TOP? Ou une autre façon de mettre en cache ces données afin qu'elle annule?

Était-ce utile?

La solution

Tirez vos données en deux passes:

// 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();

Autres conseils

Cache l'ensemble de résultats, et définir le SqlDependancy à cela.

Lire l'ensemble du cache, puis utilisez Ignorer / Affrontez que.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top