Если весь мой доступ к базе данных sql server осуществляется через хранимые процедуры

Если весь мой доступ к базе данных sql server осуществляется через хранимые процедуры, и я планирую продолжить эту практику, будет ли использование linq2sql и / или entity framework для будущих проектов ненужным уровнем сложности, который не добавляет большой ценности?

Связанный вопрос: пытается ли Microsoft увести разработчиков от использования хранимых процедур для доступа к данным?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
301
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Нет. LINQ2SQL добавляет большую ценность с точки зрения возможности легко сопоставлять сущности базы данных с классами в коде и легко работать с этими классами с помощью встроенных языковых конструкций. Вы можете легко сопоставить операции CRUD сгенерированного класса сущности с вашими хранимыми процедурами, если хотите. Я обнаружил, что некоторые вещи больше не требуют, чтобы хранимые процедуры работали легко, и поэтому я отказался от их использования, но вы не обязаны это делать. По сути, LINQ2SQL может заменить большую часть, если не все, ваш DAL, избавляя вас от необходимости писать этот код.

LINQ-to-SQL поддерживает сопоставление множества операций (включая CRUD) с хранимыми процедурами, но вы теряете возможность компоновки, т.е. вы не можете просто добавить (exp).Where(x=>x.IsActive). Один из вариантов - это возвращающие табличное значение функции (UDF) вместо хранимых процедур, которые содержат данные запрос; это также представляет собой более жесткую метамодель (в отличие от SET FMT_ONLY ON, который является хитом и ошибкой).

Таким образом, ваши методы запроса могут быть составлены в базе данных; но обратите внимание, что Entity Framework поддерживает это нет, хотя LINQ-to-SQL поддерживает.

Я использую функции с табличным значением для таких вещей, как поиск или просмотр с фильтрацией. Передайте в функцию параметры фильтра, верните соответствующие элементы из таблицы. Перетащите таблицу в конструкторе, и я получу функцию, которую я могу использовать для замены источника данных для связанного элемента управления.

tvanfosson 14.01.2009 19:47

На самом деле, сейчас я в основном занимаюсь MVC, так что связанное управление в некотором роде спорный вопрос, но вы поняли ...

tvanfosson 14.01.2009 19:48

Я использую Linq2sql для вызова своих хранимых процедур просто потому, что он так быстро генерирует .net-код, который я могу вызвать из моего приложения, его просто перетаскивают, в основном это делается за секунды. Тем не менее, я думаю, вам нужно спросить себя, сколько времени вы тратите на обслуживание этих хранимых процедур. Если вы это сделаете, вы сэкономите много времени, используя linq2sql для вызовов crud. Я использую sprocs только при выполнении многоэтапных операций с базой данных.

Просто чтобы ответить на ваш связанный с этим вопрос: преимущества использования хранимых процедур не так заметны, как когда-то. Хотя я бы не стал говорить, что хранимые процедуры - зло, как некоторые говорили в прошлом (http://www.tonymarston.net/php-mysql/stored-procedures-are-evil.html - это очень хорошая статья), я бы сказал, что использование динамического sql, если это делается в четко определенный структурированный способ, в наши дни вполне приемлем.

Я не знаю, что Microsoft пытается увести разработчиков от использования хранимых процедур, но этот динамический sql следует рассматривать как приемлемый вариант.

Вы теряете возможность писать запросы Linq, что является лучшей частью linq-to-sql.

Другие вопросы по теме