Repository-Muster - zu viele Methoden

8

Ich sehe oft Beispiel-Repository-Muster, die wie folgt aussehen:

%Vor%

Aber wie gehen Sie mit Fällen um, in denen Sie eine komplexe Suche durchführen müssen? Ich denke nicht, dass es eine gute Idee wäre, der Oberfläche viele Methoden hinzuzufügen, die dafür sorgen würden, dass sie wie folgt aussehen:

%Vor%     
Books 14.02.2012, 08:16
quelle

6 Antworten

6

Verwenden Sie den Prädikat-Builder , um die WHERE-Bedingung

dynamisch zu erstellen %Vor%

Erstellen Sie dann die Bedingungen

%Vor%

Erstellen Sie eine Klasse, um die Suchkriterien zu erfüllen

%Vor%     
Eranga 14.02.2012, 08:30
quelle
2

Frage: Warum sollten Sie das Repository generisch machen, wenn Sie typspezifische Methoden aufdecken wollen (oder haben alle Ihre Entitäten Vorname, Nachname, Adresse usw.?).

Wenn Ihre zugrunde liegenden Datenressourcen LINQ-Ausdrucksbaum aktiviert sind, wäre eine gemeinsame Signatur ebenfalls generisch, z. B.

%Vor%

Wenn Sie möchten, dass Ihre Abfragen stapelbar sind, können Sie ein IQueryable

bereitstellen %Vor%     
StuartLC 14.02.2012 08:28
quelle
1

Hier sind die Methoden, die ich auf meinem Repository-Muster zur Verfügung stelle,

%Vor%

Ich persönlich denke, dass es besser ist, später eine Abfrage zu erlauben, wenn Sie es manchmal brauchen, ich mag auch ein generisches Get-By. Die Kombination besteht darin, dass alle meine typisierten Repositories generisch ohne individuelle Entitätskonfiguration bereitgestellt werden.

Lesen Sie meinen Artikel darüber hier Ссылка

    
Luke McGregor 14.02.2012 08:32
quelle
0

Sie können ein Filtermodell hinzufügen und prüfen, welche Filter wie folgt gefüllt wurden:

%Vor%     
Pieter 14.02.2012 08:20
quelle
0

Die "get-Methode" könnte eine eigene Schnittstelle sein:

%Vor%     
vulkanino 14.02.2012 08:27
quelle
0

haben ein generisches Repository

%Vor%

haben dann spezifischere Repositories

%Vor%

So behandelt Ihr generisches Repository alle CRUD-Sachen und Ihre tatsächlichen Repositories alles

    
aaron 14.02.2012 08:38
quelle

Tags und Links