В одной из книг встретил следующее утверждение:
SQL-код для работы с базой данных будет содержаться в хранимых процедурах. Это общепринято в мире ASP.NET, и, если у вас нет на то особых причин, мы рекомендуем и вам хранить SQL-код в хранимых процедурах, а не включать его в файлы C#. В длительной перспективе эта привычка окажется очень полезной, повышая удобство сопровождения и производительность.
Насколько оправдана такая точка зрения? Действительно ли такой подход является общепринятым? Не появляется ли при таком подходе «размазавание» логики доступа к данным?
Насколько оправдан противоположный подход, при котором SQL-код базы минимизируется и база выступает только в роли пассивного хранилища данных? Можно привести несколько причин НЕ писать хранимые процедуры:
- для SQL нет поддержки рефакторинга и автодополнения на том же уровне, что для языков высокого уровня (типа C#);
- логика доступа к данным размазывается;
- если (о ужас) в хранимку попадает бизнес-логика, то такой код лишается возможности тестирования и отладки.