Важно помнить, что база данных не обязательно является просто хранилищем данных для приложения (изолированно). Другим приложениям и процессам может в конечном итоге потребоваться доступ к базе данных, особенно в больших или «корпоративных» базах данных (или приложениях), и особенно при наличии достаточного времени.
Важно учитывать:
ETL / Грузы / Миграция
Внешняя интеграция / синхронизация (BizTalk / SSIS)
Повторное использование другими приложениями (в частности, веб-сайтами, мобильными приложениями и т. Д.)
Поверхность безопасности / атаки (один подход менее безопасен, чем другой?)
Задачи обслуживания
Доступность - будет ли база данных использоваться круглосуточно? Будет ли один подход обеспечивать лучшую доступность, чем другой, и т. Д.
Кроме того, некоторые конструктивные соображения в порядке. Вы настраиваете на более быстрый выбор или более быструю запись? Один дизайн доступа к данным может работать лучше, чем другой.
Я не утверждаю, что существует одна серебряная пуля, но я предупреждаю, что любой шаблон проектирования доступа к данным требует продуманной «большой картины» - будет ли она соответствовать сегодняшним проблемам, и то, что вы можете разумно предсказать, может быть потребностями завтрашнего дня
Кроме того, вы будете предоставлять внешний API или некоторую платформу для согласованного доступа к данным? Будет ли он выставлен прямо или косвенно?
Я думаю, что есть место как для Entity Framework / LINQ to SQL, так и для традиционных хранимых процедур и других инструментов, таких как NHibernate (и т. Д.), Но вы должны сначала обосновать и рационализировать выбор технологии и постараться убедиться, что она подходит для настоящих и будущих потребностей.
РЕДАКТИРОВАТЬ: Извините, я забыл большой: ремонтопригодность. Некоторые из решений на основе шаблонов предлагают вам приличную победу в возможности восстановления DAL после изменения схемы, по сравнению с другими (например, хранимыми процедурами, написанными от руки). Стоит взвесить прирост производительности и недостатки.