Иногда, как и в пользовательских приложениях для создания отчетов, вам действительно необходимо учитывать несоответствие импеданса и уделять особое внимание SQL. В этих случаях я рекомендую следующее: Для каждого модуля, который содержит строки SQL, создайте один статический класс «SQL» для хранения их всех. Для некоторых строк SQL, вероятно, потребуются параметры, поэтому соблюдайте согласованность и поместите каждую строку в собственный статический метод.
Я делаю это только для периодического настраиваемого приложения для составления отчетов, но оно всегда работает отлично и чувствует себя освежающим и раскрепощенным. И очень приятно вернуться через несколько месяцев, чтобы сделать усовершенствование и найти весь SQL, ожидающий вас в одном файле SQL.cs. Просто прочитав один файл, все возвращается, и часто это единственный файл, который необходимо изменить.
В этих случаях я не вижу необходимости скрывать SQL в ресурсах или где-либо еще. Когда важен SQL, тогда это важно. Интересно, что все больше и больше разработчиков теперь свободно смешивают SQL с C #, в том числе, я полагаю, этот сайт, потому что, по сути, это и есть LINQ.
Наконец, как всегда, убедитесь, что вы не подвержены атакам SQL-инъекций. Особенно, если задействован пользовательский ввод, убедитесь, что вы используете какую-то параметризацию и что вы не используете конкатенацию строк.