Wir verwenden eine Reihe separater Klassen, an die das Suffix angehängt ist -repository, um die Daten aus der Datenbank abzurufen. für jede Tabelle ein eigenes Repository.
Wir haben zum Beispiel eine customerrepositoryKlasse, die alle Arten von Methoden zum Abrufen von Kunden hat, und eine Klasse, die vacancyrepositoryalle Arten von Methoden zum Abrufen von Stellenangeboten hat.
Ich habe zwei Fragen zu dieser Arbeitsweise:
Wie wäre es mit Daten, die sich über mehrere Tabellen erstrecken? Zum Beispiel habe ich einen Bildschirm, auf dem alle Kunden angezeigt werden, die noch keine Vakanz erstellt haben. Kann
customerrepositoryman Methoden aus demvacancyrespositoryoder beiden Repositorys verwenden, um Ergebnisse zurückzugeben, und gibt es eine Klasse in der Hierarchie (nennen wir sie adataservice), die die Ergebnisse aus beiden Repositorys abruft und sie zu einem Ergebnis kombiniert?Wie viel Logik kann ein solches Repository bewältigen?
Ich denke, es ist in Ordnung, das 'where active == true' in einem Repository zu implementieren, um nur aktive Datensätze abzurufen, oder sollte auch diese einfache Logik von einer höheren Klasse in der Hierarchie behandelt werden (nennen wir es adataservice)?
Das Beispiel, in das ich jetzt geraten bin, ist das folgende:
Wir haben eine Fragenliste, die eine oder mehrere Fragen enthält.
Die Frage kann ein Ergebnis haben, das in einer separaten Tabelle festgehalten wird.
Wenn Sie also das Gesamtergebnis der Fragenliste abrufen möchten, müssen Sie Daten aus der questionlistTabelle, der Fragentabelle und der questionstatusTabelle kombinieren .
Im Moment haben wir 3 verschiedene Repositories für diese Tabellen.
Wenn ich die Frage stellen würde, questionlistrepositorywie hoch das Gesamtergebnis für Liste Nr. 12 ist, müsste es Daten aus zwei anderen Repositorys abrufen und daher eine Logik enthalten. Ist das zulässig?
Oder gibt es einen, questionlistdataserviceder weiß, welche Repositories er verwenden soll?
Eine weitere Sache: Unsere Repositorys können dazu führen, IQueryabledass ein aufrufender Service die Ergebnisse leicht kombiniert. Wenn dies jedoch nicht der Fall ist, ist es meiner Meinung nach keine gute Idee, den gesamten Inhalt aller drei Tabellen aus der abzurufen Datenbank.