Frage

Wurde im MVC Schaufenster betrachtet, und sehen, dass IQueryable aus den Repository-Klassen zurückgeführt wird. Sie fragen sich, wenn Sie nicht mit LINQ macht es Sinn macht, das Objekt zurück? Im Fall von LINQ in macht Sinn, weil die verzögerte Ausführung, so Filterung in der Dienstschicht Zugabe macht Sinn, aber wenn man Sie in der DB filtern mögen in vielen Fällen nicht LINQ verwenden würden. In diesem Fall würde ich nur hinzufügen, Methoden, die die Filterung auf das Repository zu tun? Wenn ich das tue, ist das Service-Layer wirklich nützlich?

War es hilfreich?

Lösung

Argumente können so oder so gemacht werden, finden Sie in diesem letzten Blog-Posting: Sollte mein Repository aussetzen IQueryable?

Andere Tipps

Die IQueryable Sachen, die Rob Conery in die MVC Storefront setzen sind innovativ, aber bei weitem nicht die Norm bedeutet, wenn es darum geht Repositorys zu schaffen. Normalerweise ist ein Repository verantwortlich für die Zuordnung Ihrer Domain und aus der Datenbank. IQueryable zurückkehrend führt keine wirklich jede Zuordnung und stützt sich auf die Schichtdienste, das zu tun. Dies hat seine Vor- und Nachteile, aber es genügt zu sagen, dass es nicht der einzige Weg, es zu tun.

Sie werden bemerken jedoch, dass Ihre Dienste ein wenig muffig am Ende immer wegen all der doppelten Code. Zum Beispiel, wenn Sie nur eine Liste aller Benutzer in der Datenbank erhalten möchten würden Sie diese Funktion sowohl in dem Repository und die Dienstschicht zu definieren. Wo die Dienstschicht scheint jedoch, wenn mehrere Transaktionen zu / von der Datenbank für einen Vorgang benötigt wird.

Das Problem, das ich mit Belichtungs IQueryable zu dem Service Layer haben, ist, dass, wenn Sie jemals ohne Unterbrechung des Service Layer Code, um die Repository-Schicht hinter einem Web-Service wickeln wollte, konnte man nicht gut nicht ohne ADO.NET Data Services aber dann alle Repository-Code im wesentlichen überflüssig werden würde.

Während ich denke, es kann für kleine Anwendungen ziemlich produktiv sein, wenn Sie bei der Skalierung und Verteilung starten auf der Suche es nicht mehr schlecht als recht.

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