Ich bin mit LINQ to SQL meine Daten zu bekommen, wenn ich die Seitengröße auf meinem Datenraster festgelegt und der Benutzer wählt Seite 2, erhalte ich eine Postbacks und Ich las alle Daten um die zweite Seite zu zeigen. Ich vermute, es sollte einen besseren Weg geben, dies zu tun, eine Art, die am Ende nur die Daten liest, die ich zeigen muss. Ich frage mich, ob es irgendwelche Codebeispiele gibt ...Asp.Net Paginierung best practice
Antwort
Wenn Sie wirklich die Datenbank Last erleichtern, werfen Sie einen Blick auf client-side paging ...
Sie sollten wirklich die Skip und Take Methoden betrachten.
Siehe ScottGu's Beitrag auf LINQ to SQL (Part 3), und suchen Sie die Seite für "Paging unsere Abfrageergebnisse" - das hat einige nette Beispiele.
Wenn Sie alternativ LinqDataSource control verwenden und Sie mit einer SQL 2005- oder 2008-Datenbank sprechen, sollten Sie dieses Verhalten automatisch erhalten. LINQ to SQL (Part 5) deckt das ab.
public static IEnumerable<new_log> Search(dbDataContext db, int _user,int _pageNumber, int _rowCountPerPage)
{
var query = (
from p in db.new_log
where p.created_by == (_user < 0 ? p.created_by : _user) orderby p.id descending
select p
)
.Skip(_pageNumber * _rowCountPerPage).Take(_rowCountPerPage);
return query;
}
Die wichtigsten Punkte:
1.we haben die viewsate in Seite oder Steuerungsebene deaktivieren um die Leistung zu verbessern.
<%@ Page Language="C#" EnableViewState="false" %> OR <asp:GridView
EnableViewState="false" runat="server" />
2. Versuchen Sie, einzelne Abfrage zu schreiben, um das Ergebnis zu erhalten.
http://forums.asp.net/p/1779601/5120205.aspx/1?p=True&t=634814907594742030
- 1. Suchergebnis Paginierung, Best Practice
- 2. ASP.NET: Best Practice zum Umleiten zu https
- 3. Best Practice für Asp.net MVC-Ressourcendateien
- 4. ASP.NET MVC 3 - ViewModel Best Practice
- 5. Best Practice Guide: Schaukel
- 6. Best Practice von SingleOrDefault()
- 7. Java Enum best practice
- 8. BLL-Fehler Best Practice
- 9. IUnitOfWork Anleitung - Best Practice
- 10. Sql Benennung Best Practice
- 11. Best Practice verschiedene Listen
- 12. Rails Validierung best practice
- 13. wenn Bedingung best practice
- 14. MVP-Entwurfsmuster best practice
- 15. C# Subclass Best Practice
- 16. Best Practice für Bilder
- 17. Repository Pattern Best Practice
- 18. Best Practice-Benutzerführung?
- 19. for loop best practice
- 20. Java-Schnittstelle Best Practice
- 21. Best Application Delegate Practice
- 22. Best Practice response.getOutputStream
- 23. cmake Best Practice
- 24. Binding Best Practice
- 25. C# Datenverbindungen Best Practice?
- 26. UIPickerview Best Practice?
- 27. angularjs Fabrik Best Practice
- 28. Swift Datencaching - Best Practice
- 29. Best Practice von RestAngular
- 30. Best Practice eine Website
Das hängt wirklich von den Daten. Google konnte bei einer Suche, die eine Million Seiten zurückgibt, nicht mit dem clientseitigen Paging durchkommen. (Obwohl es so klingt, als würde er den ganzen Satz aus der DB laden) – JerSchneid
Natürlich. Das Entfernen von Lasten aus der Datenbank erhöht die Belastung anderer Projektteile - natürlich; Der Job muss irgendwo erledigt werden. Cliend-Side-Paging erhöht den Netzwerkverkehr _once_ und reduziert die DB-Last um _a lot_ - aber Sie müssen immer daran denken, wie viel_ die Netzwerklast erhöht wird und entscheiden, ob es sich lohnt. –