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%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.
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.
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.
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.
Tags und Links c# entity-framework design