Объектные реляционные сопоставители в .NET и использование хранимых процедур - PullRequest
3 голосов
/ 24 марта 2009

Учитывая, что они генерируют для вас функциональность Create, Read, Update и Delete (CRUD) в большинстве случаев, означает ли это, что хранимые процедуры не будут использоваться так часто? Если эти методы используют LINQ, то это означает, что хранимые процедуры не используются, правильно?

Любые разъяснения приветствуются.

1 Ответ

3 голосов
/ 24 марта 2009

Большинство ORM (включая LINQ-to-SQL и EF) предлагают вам выбор либо автоматизированных CRUD, либо хранимых процедур.

Например, хотя я с удовольствием разрешу ORM решать простые однородные проблемы CRUD (вставка простых записей и т. Д.), Если у меня есть критический метод поиска, который охватывает сложные данные нетривиальными способами, я мог бы выбрать используйте UDF (или SP), чтобы я мог профилировать его, настраивать и т. д. правильно.

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

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

Многие из оригинальных дебатов о производительности, связанных с SP и текстовыми командами, в настоящее время в значительной степени спорны; правильно параметризованный текстовый запрос может использовать кеш запросов, безопасен для инъекций и т. д.

...