ADO.NET: у вас есть много хранимых процедур в ваших собственных системах? - PullRequest
0 голосов
/ 27 января 2011

привет всем Мы знаем, что свойство CommandType объекта SqlCommand имеет 3 параметра: TableDirect, Text и StoredProcedure или «SP».

Зная, что «SP» имеет преимущества по сравнению с двумя другими параметрами, мой вопросВы делаете много SP в своих собственных системах?

Или Какое у вас решение вместо создания SP?

Спасибо

Ответы [ 4 ]

1 голос
/ 27 января 2011

Помимо создания хранимых процедур, вы можете использовать реляционное сопоставление объектов

Например:

linq to sql
Nhibernate
Entity Framework

Доступ к данным: SP против ORM

Выберите лучший способ, который вам подходит.

1 голос
/ 28 января 2011

Re: ваш первый вопрос Когда вы идете по пути хранимых процедур, количество хранимых процедур начинает непрерывно расти на протяжении всего жизненного цикла проекта. Вне базовых операций CRUD каждая хранимая процедура, как правило, тесно связана с конкретной проблемой и не очень пригодна для повторного использования. Эмпирическое правило заключается в том, что я могу ожидать 8-12 хранимых процедур для каждой таблицы данных (исключая справочные или кодовые таблицы, такие как список штатов или стран).

Очень большое количество процедур делает соглашения об именах очень важными, так что вы можете найти что-нибудь без постоянного повторного сканирования всего списка 400-500 процедур.

Re: ваш второй вопрос С SQL, написанным внутри строк внутри C # или VB.NET, происходит много ужасных вещей - это подвержено ошибкам, безобразно и т. Д.

Linq, nHybernate и многие другие существуют, но «количество концептов» (количество вещей, которое вам нужно научиться, чтобы начать работать), намного выше, чем обучение написанию хорошего исполнителя хранимых процедур на C #. *

1 голос
/ 27 января 2011

Во всей производственной системе я использовал SP и чистый ADO.NET Core для доступа к данным.Системы варьируются от 100-300 таблиц до 500-1000 хранимых процедур.

Большая часть кода доступа к данным генерируется с помощью инструмента.Я разместил исходный код и пример приложения в своем блоге, если вы заинтересованы в его использовании / изменении.Инструмент может генерировать более 100 000 строк кода за 20-25 секунд, работая с базой данных примерно с 750 хранимыми процедурами.

Уровень доступа к данным - Код Gen

ИзКонечно, если вы не знакомы с базами данных, моделированием / проектированием данных и хранимыми процедурами, вам, вероятно, лучше использовать Linq для SQL или EF4 (Entity Framework версии 4) или аналогичные.Если вам нужна производительность методом перебора, тогда ядро ​​ADO.NET вместе с хранимыми процедурами - это то, что вам нужно.

0 голосов
/ 25 февраля 2011

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

Это Функциональность базы данных , когда у меня есть какая-то архитектура базы данных, которая немного неясна, и я хочу скрыть это от абонентов.

Это Бизнес-логика , когда это просто способ , в котором мое приложение добавляет или обновляет или сколько проверки они делают, и т. Д., И т. Д.

...