Нужно ли хранить хранимые процедуры с Linq2SQL? - PullRequest
0 голосов
/ 01 марта 2009

Я только начал использовать Linq to SQL, и мне просто пришло в голову, что мне не нужны никакие sprocs в базе данных, так как я могу осуществлять доступ ко всем данным через Linq to SQL.

Есть ли причина писать sprocs с Linq для SQL?

Спасибо.

Ответы [ 5 ]

4 голосов
/ 09 марта 2009

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

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

1 голос
/ 01 марта 2009

Гораздо меньше, IMO, но все еще есть случаи, когда использование хранимых процедур или табличных функций может быть полезным. Конечно, LinqToSQL не исключает использования хранимых процедур, поэтому вы можете использовать их при желании. Например, я использовал функции с табличными значениями для выполнения параметризованных запросов к объединениям таблиц для поддержки фильтров с несколькими переменными. Это может значительно упростить ваш код и дать вам возможность оптимизировать запрос.

1 голос
/ 01 марта 2009

Обычно нет веских оснований для написания хранимых процедур в новых приложениях.

Причина в том, что в ваших приложениях существует множество гораздо более совершенных методов для доступа к данным. Существует множество технологий объектно-реляционного отображения, доступных для десятков языков и платформ.

Один аргумент для хранимых процедур заключается в том, что они представляют абстрактный API перед базой данных. Проблема в том, что SQL - очень плохой язык для написания бизнес-программ высокого уровня. Другая проблема заключается в том, что вы будете использовать API перед базой данных из языков, отличных от SQL. Такие языки, как C #, Ruby и Haskell, предлагают гораздо более мощные способы создания API-интерфейсов перед базой данных, которые намного более естественны при использовании на этих языках.

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

Боюсь, вы только что ходили по религиозному руднику!

Хранимые процедуры или нет, это очень горячо обсуждаемая тема, и часто (на мой взгляд) сводится к борьбе между специалистами по DB / SQL с одной стороны и разработчиками «ванили» с другой. Каждая сторона пытается получить как можно больше пухового одеяла.

Проверьте эту ссылку, Хранимые процедуры плохие, хорошо? и последующие дебаты LOOOOONG.

0 голосов
/ 01 марта 2009

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

Или, возможно, в Linq2SQL есть конструкция, которую сложно (невозможно?) Реализовать.

Получение данных с использованием хранимых процедур

...