Best Practices | Wohin mit der Suchlogik, wenn wir für jede Entität ein anderes Repository haben

8

Ich arbeite an einer Anwendung, in der verschiedene Repositories für verschiedene Entitäten sind und jetzt muss ich Suchlogik setzen, daher bin ich verwirrt, wo sollte ich meine Suchlogik setzen, sollte ich ein neues Repository für die Suche erstellen oder sollte ich setzen die Logik im vorhandenen Repository, und wenn ich in ein bestehendes Repository einfügen sollte, welches ist es.

Die Repositories sind unten aufgeführt

%Vor%     
rajansoft1 04.06.2013, 10:41
quelle

7 Antworten

2

Warum nicht ein Basisrepository? Etwas wie das:

%Vor%

und dann die Repositories:

%Vor%     
Bidou 04.06.2013, 11:34
quelle
2

Alternative Vorgehensweise, die ich gerne verwende ...

... Sie könnten Befehle von Abfragen trennen . Ihre Befehle würden das zugrunde liegende Domänenmodell und Repositories verwenden (wie Sie es jetzt haben?); während Ihre Abfragen eine andere Technologie verwenden könnten; beispielsweise; Abfrage der Datenbank direkt mit Entity Framework Code zuerst.

Auf diese Weise haben Sie die Flexibilität, Abfragen (unter Verwendung von LINQ) durchzuführen und Layer zu umgehen, die für Abfragezwecke keinen Mehrwert bieten, und die Rückgabetypen speziell für Ihre Clients zu entwerfen. Sie können sogar Datenbankansichten verwenden, wenn dies die Abfrage erleichtern würde.

    
L-Four 04.06.2013 11:14
quelle
1

Ich würde Methoden zum Durchsuchen jeder Entität im jeweiligen Repository erstellen und eine andere Klasse erstellen, die alle aufrufen würde, alles zu durchsuchen und die Ergebnisse in die gewünschte Form zu transformieren ...

    
Senad Uka 04.06.2013 10:46
quelle
1

Sie sollten Suchmethoden in jedem Repository auf diese Weise erstellen, wenn Sie nur Produkte durchsuchen möchten, die Sie ProductRepository.Search (.... Dadurch können Sie auch die Suchmethode für jedes Repository optimieren, die schneller ist als eine massive Suche.

    
CodeCamper 04.06.2013 10:46
quelle
1

Ich bin mir nicht 100% sicher, dass ich Ihre Frage verstehe, aber wenn Sie Verbindungen zu verschiedenen Datenbanken haben und die Suchlogik implementieren wollen, würde ich geneigt sein, eine Klasse speziell für die Suche zu erstellen, die diese Funktionalität trennt Ihre Daten sind immer eine gute Idee, da dies bedeutet, dass die Logik vollständig von allen Änderungen abweicht, die Sie möglicherweise vornehmen, und somit vor einem Löschen geschützt ist, wenn Sie das Repository versehentlich löschen.

    
Andrew 04.06.2013 10:46
quelle
1

Wenn es eine Web-App ist, die Sie schreiben, warum implementieren Sie nicht einfach einen Anker-Tag-Link zu Google? Dadurch ersparen Sie sich den Code selbst zu schreiben.

    
baxter 04.06.2013 10:47
quelle
0

Nun, ich danke allen, die an der Diskussion teilgenommen haben, habe viel darüber recherchiert und schließlich habe ich beschlossen, die Logik in ein anderes Repository zu legen, da dies nicht den besten Praktiken entspricht, aber das ist die beste Lösung in meinem Problem.

    
rajansoft1 04.06.2013 11:18
quelle

Tags und Links