Почему люди используют linq to sql? - PullRequest
21 голосов
/ 19 июня 2009

С учетом предпосылки:

  • Есть компетентные программисты sql (корреляция - написание sql запросов не проблема)
  • Есть компетентные разработчики приложений (корреляция - существует простая / сильная / гибкая архитектура для обработки соединений и простых запросов из кода)

Почему люди используют linq для sql?

  • С каждой транзакцией добавляются накладные расходы
  • Существует большая вероятность потери производительности для вычислений средней сложности (БД созданы для обработки наборов и вычислений, и команды инженеров занимались оптимизацией - зачем возиться с этим?)
  • Существует потеря гибкости (если вы хотите добавить другой пользовательский интерфейс (не приложение .NET) или метод доступа, вам нужно либо вернуть запросы обратно в БД, либо создать отдельный слой доступа к данным)
  • Существует потеря безопасности из-за отсутствия централизованного управления записью / обновлением / чтением в БД (например, запись изменилась - если вы разрешаете приложениям использовать linq для sql для обновления, то вы не можете доказать, какое приложение изменилось это или какой экземпляр приложения изменил его)

Я продолжаю видеть вопросы о linq to sql и мне интересно, что я что-то упустил.

Ответы [ 11 ]

0 голосов
/ 19 июня 2009

Для очень простых запросов накладные расходы на дополнительный слой увеличивают стоимость туда-обратно. Для несколько более сложных запросов в обычных сценариях «бизнес-приложений» оптимизация, выполняемая с помощью магии преобразования Linq-to-SQL-> sql, часто может сэкономить много.

В качестве примера, я недавно сделал перевод 1: 1 предоставленной клиентом 1400+ (!) Строки хранимой процедуры в L2S. Мало того, что он прошел путь от 1400 строк SQL до 500 строк гораздо более читаемого, строго типизированного и закомментированного кода. Это также начало поражать базу данных в среднем ~ 1500 чтений вместо ~ 30 000 чтений. Это было еще до того, как я начал изучать оптимизацию на стороне базы данных - это то, что я могу на 100% отнести к способности L2S исключать предикаты, которые можно оценить на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...