Korzystamy z szeregu oddzielnych klas z przyrostkiem, -repository
aby pobrać dane z bazy danych; dla każdej tabeli własne repozytorium.
Mamy na przykład customerrepository
klasę, która ma wszelkiego rodzaju metody pozyskiwania klientów i vacancyrepository
która ma wszelkiego rodzaju metody pozyskiwania wolnych miejsc pracy.
Mam dwa pytania dotyczące tego sposobu robienia rzeczy:
Co powiesz na uzyskanie danych obejmujących wiele tabel? Na przykład mam ekran, który pokazuje wszystkich klientów, którzy nie utworzyli jeszcze wakatu. Czy
customerrepository
metody użycia zvacancyrespository
obu repozytoriów mogą zwracać wyniki i czy istnieje klasa wyżej w hierarchii (nazwijmy ją adataservice
), która pobiera wyniki z obu repozytoriów i łączy je w jeden wynik?ile logiki może obsługiwać takie repozytorium?
Myślę, że można zaimplementować w repozytorium „where active == true”, aby pobierać tylko aktywne rekordy, czy może nawet ta prosta logika powinna być obsługiwana przez klasę wyższą w hierarchii (nazwijmy to adataservice
)?
Przykład, na który teraz wpadałem, to ten:
Mamy listę pytań, która zawiera jedno lub więcej pytań.
Pytanie może mieć wynik, który jest przechowywany w osobnej tabeli.
Więc jeśli chcesz pobrać całkowity wynik listy pytań, musisz połączyć dane z questionlist
tabeli, tabeli pytań i questionstatus
tabeli.
W tej chwili mamy 3 różne repozytoria dla tych tabel.
Gdybym zapytał, questionlistrepository
jaki jest całkowity wynik dla listy nr 12, musiałby uzyskać dane z dwóch innych repozytoriów, a zatem miałby trochę logiki, czy to dozwolone?
A może istnieje taki, questionlistdataservice
który wie, z których repozytoriów korzystać?
Jeszcze jedna rzecz: nasze repozytoria mogą powodować IQueryable
, że usługa wywołująca może łatwo łączyć wyniki, ale co powiesz na to, kiedy tak nie jest, nie sądzę, że dobrym pomysłem jest odzyskanie całej zawartości wszystkich trzech tabel z Baza danych.