Pobieranie z bazy danych rekordów z różnych tabel

0

Cześć, tytuł nie za bardzo chyba wyjaśnia o co mi chodzi.
Próbuję ogarnąć jedną rzecz. Załóżmy, że mamy klasę Student:

public class BaseEntity
{
    public UInt64 Id { get; private set; }
}

public class Student: BaseEntity
{
    public string Name { get; private set; }
    public School School { get; private set; }
}

No i jakąś klasę School:

public class School: BaseEntity
{
    public string Name { get; private set; }
    public string Address { get; private set; }
}

I teraz mamy taką bazę danych:
students (id, school_id, name)
schools (id, name, address)

I teraz, jeśli chcę mieć info o studentach, mogę skorzystać z wzorca repozytorium (nie używam żadnego ORMa) i generalnie jedno zapytanie i mam studenta.

Ale co, jeśli chcę pobrać WSZYSTKIE informacje o studencie, również te o jego szkole. Normalnie można to zrobić jednym SELECTem z JOINem. Ale jak tu powinna wyglądać warstwa danych? Czy mam mieć do tego jakieś osobne repozytorium, czy repozytorium StudentRepository powinno mieć dodatkową metodę np: "GetStudentWithSchool"?

1

Albo dodatkowa metoda w repozytorium, albo nawet oddzielne repozytorium. Albo CQRS i odpowiedni obiekt query, zwracający odpowiedni viewmodel czy coś takiego.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.