В чем преимущества LINQ to SQL?


Answers

Всего несколько быстрых мыслей.

LINQ в целом

  • Сбор запросов в памяти и хранилища данных вне процесса с тем же синтаксисом и операторами
  • Декларативный стиль очень хорошо подходит для запросов - в большинстве случаев легче читать и писать
  • Непревзойденная языковая интеграция позволяет записывать новые поставщики (как внутри, так и вне процесса) и использовать один и тот же синтаксис выражения запроса

LINQ to SQL (или другая LINQ LINQ)

  • Написание запросов, в которых они вам нужны, а не как хранимые procs, значительно ускоряет разработку: есть гораздо меньше шагов, необходимых для получения требуемых данных
  • Гораздо меньше строк (хранимые procs, имена параметров или просто SQL), в которых опечатки могут быть раздражающими; другая сторона этой монеты заключается в том, что вы получаете Intellisense для вашего запроса
  • Если вы не собираетесь работать с «сырыми» данными из ADO.NET, вы все равно будете иметь объектную модель. Почему бы не позволить LINQ to SQL обрабатывать его для вас? Мне скорее нравится иметь возможность просто делать запрос и возвращать объекты, готовые к использованию.
  • Я ожидаю, что производительность будет в порядке - и где это не так, вы можете настроить ее самостоятельно или вернуться к прямому SQL. Использование ORM, конечно же, не устраняет необходимость создания нужных индексов и т. Д., И вы обычно должны проверять генерируемый SQL для нетривиальных запросов.

Это не панацея от любых средств, но я очень предпочитаю ее либо делать SQL-запросы напрямую, либо использовать хранимые procs.

Question

Я только начал использовать LINQ to SQL в проекте среднего размера и хотел бы увеличить свое понимание преимуществ L2S.

Один недостаток, который я вижу, заключается в том, что он добавляет еще один уровень кода, и я понимаю, что он имеет более низкую производительность, чем использование хранимых процедур и ADO.Net. Также кажется, что отладка может быть проблемой, особенно для более сложных запросов, и что в конечном итоге они могут быть перемещены в сохраненный процесс.

Я всегда хотел, чтобы писать запросы в лучшей среде разработки, L2S запрашивает решение, которое я искал? Или мы просто создали еще один слой поверх SQL, и теперь вам нужно в два раза больше беспокоиться?




Я должен сказать, что это то, что вы искали. Требуется некоторое время, чтобы привыкнуть к нему, но как только вы это сделаете, вы не можете думать о возвращении (по крайней мере, для меня). Что касается linq и хранимых процедур, вы можете иметь низкую производительность, если вы построите это неправильно. Я перешел на linq на sql несколько хранимых процедур клиента, которые были ужасно закодированы, поэтому время, потерянное с 20 секунд (полностью неприменимо для веб-приложения) до <1 сек. И гораздо меньше кода, чем решение хранимой процедуры.

Обновление 1: Также вы получаете большую гибкость, так как вы можете ограничить столбцы того, что получаете, и на самом деле это будет только извлекать. В решении хранимой процедуры вам необходимо определить процедуру для каждого набора столбцов, который вы получаете, даже если базовые запросы одинаковы.