Frage

Ich bin mit LINQ für Daten in meiner Website Paging. Ich bin derzeit mit Skip () und Take (), um das Paging auszuführen. Jetzt will ich die Daten-Cache-Cache-Abhängigkeiten, so dass der der Cache, wenn sich die Daten ändern erlischt. SQL Server ist jedoch Abfragebenachrichtigungen Sie den TOP-Ausdruck nicht unterstützen. Gibt es alternative Möglichkeiten, um einen ausgelagerten Menge von Daten mit LINQ abzufragen, die nicht TOP generieren? Oder eine andere Möglichkeit, diese Daten zu cachen, so dass sie entkräftet?

War es hilfreich?

Lösung

Ziehen Sie Ihre Daten in zwei Durchgängen:

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

Andere Tipps

Cache die gesamte Ergebnismenge, und stellen Sie die SqlDependancy darauf.

Lesen Sie den gesamten Satz aus dem Cache und dann überspringen verwenden / Take darauf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top