LINQ-запросы против хранимых процедур - PullRequest
14 голосов
/ 14 января 2011

Каковы плюсы и минусы использования запросов linq (вместе с ORM, например EF или linq2sql) VS.Хранимые процедуры (SQL Server 2008) для запроса и обновления модели данных?Спектакль?Скорость?Etc ...

Ответы [ 12 ]

0 голосов
/ 02 марта 2016

Еще одна вещь, которую нужно добавить: Используя TSQL , вы можете создать пакет запросов, которые будут выполняться как блок , чтобы обеспечить доступ кстроки заблокированы, пока вы не закончите свой список запросов.Насколько я знаю, я думаю, что это невозможно сделать с помощью LINQ .

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

Это очень полезно, например, когда вы не хотите, чтобы новая вставка выполняласьпока вы выполняете список запросов.

0 голосов
/ 13 августа 2014

Я предпочитаю LINQ, проверяя запросы, полученные с помощью такого инструмента, как EF Profiler.Если какие-либо сгенерированные запросы слишком длинные или создают N + 1, их обычно можно исправить.Находясь в производстве, я слежу за статистикой, и если медленный запрос не может быть исправлен с помощью кэширования, я переместу его в хранимую процедуру.

Основные преимущества выполнения ваших запросов в linq:

  • Простое управление исходным кодом и развертывание изменений запросов
  • Запросы компилируются, поэтому если вы меняете / переименовываете что-то, вы знаете, что вы что-то сломали
  • Может ли модульное тестирование ваших запросов(вероятно, есть способы сделать это с сохраненными процессами, но я не видел, чтобы кто-нибудь делал это)
  • Может легко отследить, где используются запросы, и удалить те, которые больше не требуются

Когда я присоединился к любому проекту, в котором есть много сохраненных процедур, часто их не используют (или, вероятно, не используют), но никто не решается удалить их, поскольку никто не уверен.

Единственный раз, когда я начал бы с хранимых процедур, это если бы я работал в корпоративной среде, где доступ к базе данных был ограничен таким образом, что мне пришлось.

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