Наразі ми перебуваємо в ситуації, коли у нас є вибір між використанням об'єктивного реляційного картографічного об'єкта, що випускається, або прокатування власного
У нас є застаріле додаток (ASP.NET + SQL Server), де рівень даних та бізнес-рівень, на жаль, пюре разом. Система не є особливо складною з точки зору доступу до даних. Він читає дані з великої групи (35-40) взаємопов’язаних таблиць, маніпулює ними в пам'яті та зберігає їх назад до деяких інших таблиць у форматі зведення. Зараз ми маємо можливість здійснити деякий рефакторинг і дивимось на кандидатські технології, які можна використовувати для окремої та належної структури нашого доступу до даних.
Яку б технологію ми не вирішили, ми хотіли б:
- в нашій доменній моделі є об'єкти POCO, які є ігноруючим наполегливістю
- мати шар абстракції, який дозволяє нам тестувати об'єкти нашої моделі домену на макетному базовому джерелі даних
З цього питання, очевидно, є вже багато що стосується шаблонів та рамок тощо.
Особисто я наполягаю на використанні EF спільно з генератором тестових репозиторіїв ADO.NET Unit / Generator сущностей POCO . Він задовольняє всі наші вимоги, може бути легко вбудований в шаблон Repo / UnitOfWork, і наша Структура БД досить зріла (вже зазнала рефактор), тому ми не будемо щодня вносити зміни в модель.
Однак інші в групі пропонують архітектуру / згортання власного DAL повністю з нуля. (Спеціальні DataMappers, DataContexts, сховище, інтерфейси скрізь, надмірне введення залежностей для створення конкретних об'єктів, користувацький LINQ-базовий переклад запитів, користувальницькі керування реалізаціями, користувацькі FetchPlan реалізації ...) список продовжується і буде відвертим - це страйки. мене як божевілля.
Деякі аргументи, про які йдеться, - це "принаймні, ми будемо контролювати власний код" або "О, я використовував L2S / EF у попередньому проекті, і це було не що інше, як головний біль". (Хоча я раніше використовував як у виробництві, так і виявив, що будь-які проблеми мало і далеко між ними, і дуже керовані)
Отож, будь-який з ваших досвідчених розробників / архітекторів, що там перебувають убер, має будь-які слова мудрості, які могли б допомогти мені відхилити цей продукт від того, що мені здається, що це буде повною катастрофою. Я не можу не думати, що будь-яка вигода, отримана від ухилення від проблем EF, буде втрачена так само швидко, намагаючись переосмислити колесо.