Wo kommt paging, Sortierung, etc gehen in repository-Muster?
Wo setzen wir die Logik für paging und Sortieren von Daten in einem asp.net repository-pattern-Projekt?
Sollte es gehen in die service-Schicht oder legen Sie es in den controller und der controller direkt die repository? Controller -> Repository angezeigt hier für ein jquery-grid.
Aber im Gegensatz zu diesem Artikel, mein repository zurück IQueryable<datatype>
- Die Linq .Überspringen Sie() und .Nehmen, () nicht genug? Sie können schreiben, eine Erweiterung Methode GetPage(int index[, int pageSize = 20]) um es vollständig zu machen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte es gehen in das Repository, wenn das Repository zurück materialisierte Sequenzen (
ICollection<T>
,List<T>
), etc.Aber wenn Ihre Rückkehr
IQueryable<T>
(wie ich bin), ich hoffe, Sie haben einen service-layer vermittelt zwischen Controller und Repository, die ausgeführt wird, Abfragen auf die IQueryable und materialisiert Sie in konkrete Sammlungen.So, ich würde die Auslagerungsdatei in die service-Schicht.
Etwas wie dieses:
.ToPagedList
werden können, eine Erweiterung Methode, die für die Auslagerungsdatei, die Sie benötigen und VorhabenPagedList<T>
.Gibt es viele
PagedList<T>
Implementierungen gibt. Ich mag Rob Conery ist eine. Hat Eigenschaften, die Ihrer Ansicht erfordert, so dass Sie binden können, um einePagedList<T>
und erstellen Sie eine HTML-Helfer für die Wiedergabe der Seitenzahlen sehr leicht. Das einzige problem mit einem ausgelagerten Liste LINQ-Implementierung ist dieCount()
Betrieb (für die Anzahl der Datensätze) getan werden muss auf dem server und damit Ergebnisse in 2 round-trips.Wollen Sie nicht zurückkehren, nicht-materialisierte Abfragen-Ansicht, da IMO diese bricht das MVC-Muster.
Jedes mal, wenn Sie gehen, um eine neue Seite, rufen Sie Ihren service zum abrufen der gewünschten Resultat führen.
Sortier-und paging-Daten-Funktionen. Sollte es gehen in das repository.
Repository zurückgeben sollte, ein 'PageableResultSet', oder so ähnlich, die verantwortlich ist für die Auslagerungsdatei.
Ich glaube paging sollten in das repository. Finden Sie diese Antwort, die ich gepostet auf eine Frage stellen.
Repositories und Beharrlichkeit Ignoranz wieder