Я вважаю, що якщо у вас є ваші сховища, використовуйте ORM, що це вже досить абстраговано з бази даних.
Однак де я зараз працюю, хтось вважає, що у нас повинен бути шар, який абстрагує ORM у випадку, якщо ми хотіли б змінити ORM пізніше.
Це дійсно потрібно чи просто багато над головою, щоб створити шар, який буде працювати на багатьох ORM?
Редагувати
Просто, щоб детальніше:
- У нас є клас POCO та Entity Class, які відображені за допомогою AutoMapper. Клас сутності використовується шаром репозиторію. Потім рівень репозиторію використовує додатковий шар абстракції для зв'язку з Entity Framework.
- Діловий рівень жодним чином не має прямого доступу до Entity Framework. Навіть без додаткового шару абстрагування над ORM, для цього потрібно використовувати сервісний рівень, який користується шаром сховища. В обох випадках бізнес-рівень повністю відокремлений від ORM.
- Основним аргументом є можливість зміни ORM у майбутньому. Оскільки він дійсно локалізований всередині шару репозиторію, для мене він уже добре відокремлений, і я не бачу, чому потрібен додатковий шар абстракції, щоб мати код "якості".