Я считаю, что если у вас есть ваши репозитории, используйте ORM, который уже достаточно абстрагирован от базы данных.
Однако там, где я сейчас работаю, кто-то считает, что у нас должен быть слой, который абстрагирует ORM на случай, если мы захотим изменить ORM позже.
Это действительно необходимо, или это просто слишком много, чтобы создать слой, который будет работать на многих ORM?
редактировать
Просто чтобы дать более подробную информацию:
- У нас есть класс POCO и класс сущностей, которые отображаются с помощью AutoMapper. Класс сущности используется слоем Repository. Затем уровень хранилища использует дополнительный уровень абстракции для взаимодействия с Entity Framework.
- Бизнес-уровень никоим образом не имеет прямого доступа к Entity Framework. Даже без дополнительного уровня абстракции над ORM необходимо использовать уровень обслуживания, который использует уровень хранилища. В обоих случаях бизнес-уровень полностью отделен от ORM.
- Основным аргументом является возможность изменить ORM в будущем. Поскольку он действительно локализован внутри слоя Repository, для меня он уже хорошо отделен, и я не понимаю, почему для создания «качественного» кода требуется дополнительный уровень абстракции.