Korzystamy z szeregu oddzielnych klas z przyrostkiem, -repositoryaby pobrać dane z bazy danych; dla każdej tabeli własne repozytorium.
Mamy na przykład customerrepositoryklasę, która ma wszelkiego rodzaju metody pozyskiwania klientów i vacancyrepositoryktó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
customerrepositorymetody użycia zvacancyrespositoryobu 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 questionlisttabeli, tabeli pytań i questionstatustabeli.
W tej chwili mamy 3 różne repozytoria dla tych tabel.
Gdybym zapytał, questionlistrepositoryjaki 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, questionlistdataservicektó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.