Uważam, że jeśli masz repozytoria, użyj ORM, który jest już wystarczająco abstrakcyjny z bazy danych.
Jednak tam, gdzie teraz pracuję, ktoś uważa, że powinniśmy mieć warstwę, która wyodrębnia ORM na wypadek, gdybyśmy chcieli później zmienić ORM.
Czy to naprawdę konieczne, czy po prostu dużo pracy nad stworzeniem warstwy, która będzie działać na wielu ORM?
Edytować
Aby podać więcej szczegółów:
- Mamy klasy POCO i Entity Class, które są mapowane za pomocą AutoMapper. Klasa encji jest używana przez warstwę repozytorium. Warstwa repozytorium wykorzystuje następnie dodatkową warstwę abstrakcji do komunikacji z Entity Framework.
- Warstwa biznesowa w żaden sposób nie ma bezpośredniego dostępu do Entity Framework. Nawet bez dodatkowej warstwy abstrakcji nad ORM, ta musi korzystać z warstwy usługi, która korzysta z warstwy repozytorium. W obu przypadkach warstwa biznesowa jest całkowicie oddzielona od ORM.
- Głównym argumentem jest możliwość zmiany ORM w przyszłości. Ponieważ jest on naprawdę zlokalizowany wewnątrz warstwy repozytorium, dla mnie jest już dobrze oddzielony i nie rozumiem, dlaczego potrzebna jest dodatkowa warstwa abstrakcji, aby mieć kod „jakości”.