Właśnie musiałem zmienić ORM i było to dość trudne zadanie, ponieważ logika zapytań przeciekała wszędzie. Gdybym kiedykolwiek musiał opracować nową aplikację, osobiście wolę enkapsulować całą logikę zapytań (używając ORM), aby zabezpieczyć ją przed zmianami. Wzorzec repozytorium jest dość kłopotliwy dla kodu i utrzymania, więc zastanawiałem się, czy istnieją jakieś inne wzorce rozwiązania problemu?
Mogę przewidzieć posty o nie dodawaniu dodatkowej złożoności, zanim będzie to naprawdę potrzebne, o zwinności itp., Ale interesują mnie tylko istniejące wzorce rozwiązujące podobny problem w prostszy sposób.
Moją pierwszą myślą było stworzenie repozytorium typu ogólnego, do którego w razie potrzeby dodaję metody do klas repozytorium typu za pomocą metod rozszerzenia, ale testowanie jednostkowe metod statycznych jest strasznie bolesne. TO ZNACZY:
public static class PersonExtensions
{
public static IEnumerable<Person> GetRetiredPeople(this IRepository<Person> personRep)
{
// logic
}
}