Okej, czyli serwisy lepiej by nie otrzymywały ViewModels, a w takim razie repozytoria powinny zwracać surowe dane z Entities, czy mogą ViewModels?
Repozytoria mają zwracać encje domenowe. (Nie mylić z tym, co w EF nazywane jest jako entity.)
Rozumiem, jeszcze mnie zastanawia, czy dane zwracane przez Repezytoria powinny być IQueryable, czy może konwerterować je przed zwróceniem np. do Listy?
Repozytorium powinno być zdatne do użytku dla logiki biznesowej, więc nie może wypuszczać szczegółów implementacji na zewnątrz.
Tutaj mam pytanie - a co w przypadku jak w tabeli mam dziesiątki tysięcy rekordów i potrzebuję jedynie jakąś krótką, stronicowaną listę? IQuerable wydaje mi się tutaj odpowiedni w kontekście takim, że z tego co czytalem na poziomie repozytorium nie powinno się obsługiwać sortowania i stronicowania.
Owszem, a to dlatego, że sortowanie i stronicowanie to są potrzeby widoku, a repozytorium nigdy żadnego związku z widokiem nie ma.
http://commitandrun.pl/2016/05/11/Repozytorium_najbardziej_niepotrzebny_wzorzec_projektowy/
Jeśli celem jest pobranie danych na potrzeby widoku, to trzeba sobie po prostu napisać klasę, która dane z bazy weźmie, przekształci na viewmodele i zwróci, a nie udawać DDD z serwisami i repozytoriami, które w takim przypadku w ogóle nie mają zastosowania.