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 customerrepository
Klasse, die alle Arten von Methoden zum Abrufen von Kunden hat, und eine Klasse, die vacancyrepository
alle 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
customerrepository
man Methoden aus demvacancyrespository
oder 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 questionlist
Tabelle, der Fragentabelle und der questionstatus
Tabelle kombinieren .
Im Moment haben wir 3 verschiedene Repositories für diese Tabellen.
Wenn ich die Frage stellen würde, questionlistrepository
wie 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, questionlistdataservice
der weiß, welche Repositories er verwenden soll?
Eine weitere Sache: Unsere Repositorys können dazu führen, IQueryable
dass 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.