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%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%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%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 Ссылка
Tags und Links c# design-patterns