Я всегда учил себя обрабатывать любой код доступа к данным в совершенно отдельном «слое» для моей бизнес-логики и кода пользовательского интерфейса. Это всегда было очень хорошей архитектурой для меня, и любые «правила» или лучшие практики, которые я вижу, все еще вписываются в этот стиль кодирования, особенно в Принцип единой ответственности .
Для большинства моих домашних проектов я бы использовал свой собственный ORM, который я всегда создавал с открытым исходным кодом. Однако с тех пор стал доступен LINQ, который был очень похож на работу моего ORM (но ... лучше).
Ранее я ничего не мог сделать со своим собственным ORM, чего не могу сделать сейчас с LINQ (кроме фрагментов REST-интеграции). Итак, мой вопрос: LINQ мой новый уровень доступа к данным? Нужен ли мне этот слой вообще? Должен ли мой BLL просто общаться напрямую с LINQ? Или это все еще плохая практика?
Редактировать:
Первоначальный вопрос касался LINQ to Entities, но есть много интересных ответов относительно LINQ to SQL. Что думают люди о них обоих? Я понимаю, что LINQ to SQL не может заменить DAL, но может ли Entity Framework?