Приложение C# - я должен использовать хранимые процедуры или ADO.NET с методами программирования C#?

Ответ правильный, ваше ходатайство:

+IPD,0,345:GET /?pin=12 HTTP/1.1
Host: 192.168.4.1
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,

Параметры в запросе на получение отправляют в URL, поэтому было бы то же самое сделать:

$.get("http://192.168.4.1:80/", {pin:12});

И [ 116]

$.get("http://192.168.4.1:80/?pin=12");

Это означает, что вы можете выполнять ваш запрос, как вы знаете, в VB.NET, но вы должны поместить в хост:

http://192.168.4.1:80/?pin=12
5
задан J3r3myK 21 January 2009 в 07:08
поделиться

5 ответов

Ну, Сохраненный Procs может быть дополнительным уровнем абстракции или ряда функций/методов при рассмотрении базы данных как объект или сервис. Это может быть выгодно, так как можно скрыть детали конкретной реализации и изменить его, когда потребность быть, не повреждая приложение (как долго, поскольку Вы оставляете интерфейс, например, сохраненные proc параметры, одни). Кроме того, если можно скрыть детали таблицы позади ряда сохраненного procs, неважно, как кто-то получает доступ к базе данных, они только смогут взаимодействовать с ним с помощью методов, которые Вы разработали и записали для него-> существует меньше риска кого-то разжигание Excel и взламывание Вашей базы данных.

С другой стороны, Сохраненные Proc требуют обширного знания T-SQL, и Вы будете распространять свой бизнес и логику приложения через два набора кодовых баз, которые могут быть оборотной стороной. Что-либо, что можно сделать в сохраненном proc, может также быть сделано в ADO.NET с прямыми SQL-операторами, и это больше даже не медленнее.

Дальнейшим плюс для Сохраненного Procs является то, что, если что-то неправильно в Вашем proc, можно зафиксировать его просто путем развертывания proc с фиксацией - Вы не должны касаться своего приложения C#. Это может быть великим плюс в "размещенной" среде, если Вы только получаете 3 выпуска в год - применение текущих исправлений посредством фиксации Сохраненного Proc может быть Вашим живым средством сохранения затем!:-)

В целом: существует много за и против за или против сохраненного procs; я предложил бы, если Вы чувствуете себя довольными записью T-SQL, почему бы не дать ему попытку и видеть, как это работает на Вас. Если это чувствует к громоздкому или слишком негибкому или как слишком много работы в конечном счете, можно всегда переключаться назад на использование прямого SQL в приложении C#.

Просто мои 0,02$. Marc

9
ответ дан 18 December 2019 в 07:11
поделиться

Ну, Вы собираетесь закончить тем, что использовали ADO.NET, так или иначе... это кажется на значение хранимых процедур по сравнению с текстом команды. Существуют преимущества обоих, к сожалению, таким образом, это не простой вопрос, однако при рассмотрении инструментов как LINQ существует больше преимуществ для текста команды, так как это может быть более "компонуемо" (т.е. вызывающая сторона может добавить Skip/Take/Where/OrderBy и имейте его, влияют на полный запрос).

Другая опция, которая смешивает преимущества обоих, является табличными функциями (через UDFs) - они также имеют преимущество более сильных метаданных (трудно точно запросить схему хранимой процедуры).

Любой подход должен быть инжекционно-безопасным, пока Вы правильно используете параметры.

4
ответ дан 18 December 2019 в 07:11
поделиться

Два вопроса, на которые еще не ответили:

SProcs может быть помещен в схему и явиться олицетворением другой схемы. Это означает, что можно заблокировать вниз доступ к базе данных и дать пользовательские полномочия ТОЛЬКО, чтобы выполнить SProcs, не выбрать обновление и т.д., которое является очень хорошей премией безопасности.

Во-вторых, sproc может быть ЗНАЧИТЕЛЬНО быстрее в зависимости от какой операции Ваше выполнение. Если Ваше ограниченное сетью IO и Ваше способное для выполнения операций присвоения на данных, делая так в единственной хранимой процедуре вместо того, чтобы делать выборку ВСЕГО набора данных, обрабатывая его, то передача изменения даст Вам хорошее увеличение скорости.

То же идет для транзакций, если необходимо выполнить операции последовательно (т.е. изменить значение в двух таблицах сразу, которое включает некоторую логику), затем, необходимо будет держать транзакцию в течение времени, которое требуется, чтобы Вы вычислили значение и передачу назад в двух SQL-запросах, тогда как хранимая процедура может сделать это в единственной процедуре.

6
ответ дан 18 December 2019 в 07:11
поделиться

Позвольте мне перефразировать это: если Вы раскрываете данные, изменяя его в коде, и затем наличие SP обновляет DB с новыми значениями, или если Вы просто называете SP как "функцию".
Моя точка акцента, даже если Вы делаете манипулирование данными в коде, необходимо все еще только получать доступ к SPS на дб.

Делаете ли Вы это или имеете более сложный SPS, делают манипулирование данными, зависел бы от нескольких факторов:

  • Ваш уровень комфорта со сложным SQL (в противоположность C#)
  • в каком количестве данных Вы нуждаетесь к выпадающему и изменяете - могут быть аспекты производительности (они стоят для получения по запросу всех этих данных к коду),
  • подключенный к предыдущему, Ваша архитектура может сыграть роль - например, является Вами получающий доступ к локальному серверу дб, или удаленный
  • Какие манипуляции необходимо сделать, это может быть настолько сложно, Вы не хотите пачкать свой sql
  • Какую бизнес-логику необходимо осуществить, каково информационно-зависимое на и т.д.

Это действительно сводится к личному выбору, нет никакого правильного пути (хотя существует много неправильных путей...). Хотя важно остаться последовательным, совершенно приемлемо иметь различные типы доступа дб в Вашей системе, пока контекст/потребность выравнивает по ширине его.
Я сказал бы, выбирают, какой бы ни Вы являетесь самыми довольными и придерживаетесь этого - пока у Вас нет причины сделать это по-другому. Никакая причина быть догматичным об этом...

3
ответ дан 18 December 2019 в 07:11
поделиться

Я рекомендовал бы в соответствии с одной конвенцией или другим (или имеют Ваш код SQL как строки в Ваших классах или используют хранимые процедуры). Существуют бесчисленные дебаты об этом, но действительно нет никаких важных причин выбрать один или другой.

0
ответ дан 18 December 2019 в 07:11
поделиться