Да, я знаю, что запросы к БД должны хранится в отдельном слое.
Правильно ли запросы в этом слое писать прямо в коде или их обычно хранят в ресурсах?
Зависит от выбранной архитектуры.
Я весьма рекомендую прочитать книгу "Руководство Microsoft по проектированию архитектуры приложений, 2-е издание", там есть множество советов по проектированию каждого слоя. Ручаюсь - голова кругом пойдёт от многообразия архитектурных паттернов.
Если говорить про слой работы с базой. в современных приложениях чаще встречается вариант динамических запросов ("из кода"), а не хранимых процедур:
В прошлом хранимые процедуры обеспечивали лучшую производительность по сравнению с динамическими SQL-выражениями. Однако сегодня современные ядра СУБД практически уравняли производительность обработки хранимых процедур и динамических SQL-выражений (использующих параметризованные запросы). Основными факторами при принятии решения об использовании хранимых процедур являются абстракция, удобство обслуживания и среда выполнения.
Из своей практики могу сказать, что да, хранимки использую реже, только когда нужна экстраоптимизация.
Если интересует широта и разнообразие архитектурных подходов к построению слоя работы с базой данных - то вот первая часть таблички:
Узнали какие-то из знакомых подходов? А ведь после таблицы отсылки к книгам Фаулера и отдельная глава 15 ещё раз про базы данных.
Поэтому: в реальных приложениях может быть устроено по-разному. Не надо думать, что если вам тут посоветуют какой-то один подход, то он будет единственно верным.
Правильным с точки зрения масштабируемости и гибкости будет решение, которое не использует SQL напрямую. Лучше использовать ORM, например nhibernate или entity, реализовать модуль, инкапсулирующий логику взаимодействия с БД в виде отдельного класса(синглтон) и обращаться к нему оттуда, откуда потребуется по заранее определенному контракту, который нужно расширять по мере появления новых задач.
Обычно запросы записывают все со стороны базы, т.е. в процедурах. Но если необходимы именно запросы, то пишут обычно в коде.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Загружаю в DataGridView таблицу из ExcelХочу сделать сортировку по выбору из ComboBox
У меня есть следующая задача: необходимо в синхронной манере отправить запрос через шину данных и дождаться ответа, после чего вернуть управление...
В общем, есть 2 строки, формат которых нужно проанализировать на похожесть