Paginierung ist ein entscheidender Aspekt der Anwendungsentwicklung, insbesondere beim Umgang mit großen Datenmengen. Entity Framework (EF) Core 8 in C# bietet leistungsstarke Funktionen für die Implementierung einer effizienten Paginierung. In diesem Leitfaden untersuchen wir Best Practices für die Implementierung der Paginierung mit EF Core 8 sowie Beispiele.
EF Core bietet die Skip- und Take-Methoden, die für die effiziente Implementierung der Paginierung unerlässlich sind. Mit Skip können Sie eine bestimmte Anzahl von Zeilen überspringen, und Take begrenzt die Anzahl der zurückgegebenen Zeilen.
var pageNumber = 1; var pageSize = 10; var result = dbContext.YourEntity .OrderBy(e => e.SortingProperty) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToList();
In diesem Beispiel bestimmen pageNumber und pageSize die aktuelle Seite bzw. die Anzahl der Elemente pro Seite.
Für schreibgeschützte Vorgänge wie das Abrufen von Daten zu Anzeigezwecken sollten Sie die Verwendung von AsNoTracking in Betracht ziehen, um die Leistung zu verbessern, indem Sie den Aufwand für die Nachverfolgung von Änderungen vermeiden.
var result = dbContext.YourEntity .AsNoTracking() .OrderBy(e => e.SortingProperty) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToList();
Dies ist besonders nützlich, wenn Sie nicht beabsichtigen, Änderungen an den abgerufenen Entitäten zu aktualisieren oder zu speichern.
Stellen Sie sicher, dass die zum Sortieren verwendeten Spalten indiziert sind. Indizierte Spalten verbessern die Leistung von Sortiervorgängen erheblich.
// Ensure SortingProperty is indexed modelBuilder.Entity() .HasIndex(e => e.SortingProperty);
Effizient indizierte Spalten beschleunigen die Sortierung und verbessern die Gesamtleistung der Paginierung.
Um die Gesamtzahl der Datensätze zu ermitteln, ohne alle Daten abzurufen, verwenden Sie „Anzahl“, bevor Sie die Paginierung anwenden. Dadurch wird das Laden unnötiger Daten vermieden.
var totalRecords = dbContext.YourEntity.Count(); var result = dbContext.YourEntity .OrderBy(e => e.SortingProperty) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToList();
Seien Sie vorsichtig, wenn Sie Skip and Take für die Paginierung in Szenarien verwenden, in denen Daten gleichzeitig geändert werden können. Erwägen Sie in solchen Fällen die Verwendung alternativer Methoden wie Keyset-Paginierung für eine bessere Konsistenz.
Die effiziente Implementierung der Paginierung ist entscheidend für die Verbesserung der Leistung von Anwendungen, die große Datenmengen verarbeiten. Indem Sie diese Best Practices befolgen, können Sie sicherstellen, dass Ihre Paginierungslogik optimiert und skalierbar ist, wenn Sie EF Core 8 in C# verwenden.
Das obige ist der detaillierte Inhalt vonC# | Best Practices für die Paginierung mit EF Core 8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!