Я не фанат хранимых процедур
Хранимые процедуры более удобны в обслуживании, потому что: * Вам не нужно перекомпилировать свое приложение C # всякий раз, когда вы хотите изменить какой-либо SQL
В конечном итоге вы перекомпилируете его, когда типы данных изменятся, или вы захотите вернуть дополнительный столбец, или что-то еще. Количество раз, когда вы можете «прозрачно» изменить SQL из своего приложения, в целом довольно мало
- В итоге вы снова используете код SQL.
Языки программирования, включая C #, имеют эту удивительную вещь, называемую функцией. Это означает, что вы можете вызывать один и тот же блок кода из нескольких мест! Удивительный! Затем вы можете поместить повторно используемый код SQL в один из них, или, если вы хотите получить действительно высокотехнологичный, вы можете использовать библиотеку, которая сделает это за вас. Я считаю, что они называются объектно-реляционными картографами, и в наши дни они довольно распространены.
Повторение кода - худшее, что вы можете сделать, когда пытаетесь создать поддерживаемое приложение!
Согласен, поэтому хранимые процессы - это плохо. Гораздо проще реорганизовать и разложить (разбить на более мелкие части) код на функции, чем SQL на ... блоки SQL?
У вас есть 4 веб-сервера и несколько приложений для Windows, которые используют один и тот же код SQL. Теперь вы поняли, что с кодом SQl есть небольшая проблема, поэтому вы предпочитаете ...... изменить процедуру в 1 месте или отправить код всем веб-серверы, переустановите все настольные приложения (может помочь clickonce) на всех окнах
Почему ваши приложения Windows подключаются напрямую к центральной базе данных? Это похоже на ОГРОМНУЮ дыру в безопасности и узкое место, поскольку исключает кеширование на стороне сервера. Разве они не должны подключаться через веб-сервис или аналогично вашим веб-серверам?
Итак, нажмите 1 новый sproc или 4 новых веб-сервера?
В этом случае это проще нажать одну новую sproc, но по моему опыту, 95% от «подтолкнули изменений» влияют на код , а не базы данных. Если вы отправляете 20 вещей на веб-серверы в этом месяце, а 1 - на базу данных, вы вряд ли сильно потеряете, если вместо этого отправите 21 вещь на веб-серверы и ноль на базу данных.
Проще пересмотреть код.
Можете ли вы объяснить, как? Я не понимаю этого. Особенно учитывая, что спроки, вероятно, не находятся в управлении исходным кодом, и поэтому не могут быть доступны через веб-браузеры SCM и так далее.
Больше минусов:
Storedprocs живут в базе данных, которая выглядит для внешнего мира как черный ящик. Простые вещи, такие как желание поместить их в систему контроля версий, становятся кошмаром.
Есть также проблема явных усилий. Возможно, имеет смысл разбить все на миллион ярусов, если вы пытаетесь объяснить своему генеральному директору, почему им просто нужно 7 миллионов долларов на создание некоторых форумов, но в противном случае создание хранимого процесса для каждой мелочи - просто лишняя работа для пустяка. выгода.