Мне очень нравится хранить SQL в текстовых файлах, встроенных в сборку как ресурсы (когда у меня есть , чтобы иметь значительное их количество; обычно я человек ORM).
Конечно, от вас зависит форматирование этого текстового файла. Вы могли бы иметь разделитель на две строки:
UpdateCustomer:
UPDATE CUSTOMER SET NAME=@Name WHERE ID=@ID
FindCustomer:
SELECT NAME, ADDRESS FROM CUSTOMER
WHERE ID=@Id
etc
Нетрудно иметь класс, который загружает его в Dictionary<string,string>
в инициализаторе типа или даже в Dictionary<string,SqlStatementHelper>
, где последний является классом, чтобы упростить подготовку оператора с соответствующими значениями. Вы можете использовать любой другой формат, который вы хотите, включая XML - хотя, если вам больше ничего не нужно, кроме пар имя / sql, это, вероятно, будет излишним.
Недостатком этого является разъединение между SQL и кодом, который его использует - вы не можете сразу сказать, что это за параметры, не глядя на текстовый файл. С другой стороны (и я просто размышляю здесь), вы, вероятно, могли бы автоматически генерировать класс из SQL (и немного метаданных) с помощью методов со строго типизированными параметрами.
Смешанное благословение хранимых проков в том, что они живут в базе данных, а не в вашем коде. Плюсом этого является то, что вы, скорее всего, будете синхронизировать их с изменениями DDL. Недостатком является то, что они требуют больше усилий для изменения (IME, в любом случае), чем запросы, определенные локально. (Очевидно, есть много других плюсов и минусов, но я ограничиваю себя здесь удобством.)
Что касается технического обслуживания - я полагаю, что возможно, что у вас будет обновление "только для базы данных", состоящее только из таблиц и хранимых процедур, без каких-либо знаний клиентов - в этом случае хранимые процедуры будут лучше переехать. По моему опыту (конечно, с пользовательскими решениями, где есть только несколько приложений, обращающихся к базе данных, поэтому совместимость не является , а большой проблемой), изменения кода почти повсеместны, но изменения базы данных менее распространены - при этом Точка хранения запросов с приложением означает, что вам меньше придется вносить изменения в базу данных при обновлении. Имеет ли что-нибудь из этого смысл? Я еще не пил кофе ...