Как обработать ADO.NET DbConnection (s) в долго работающей веб-службе с DbDataAdapters? - PullRequest
0 голосов
/ 09 февраля 2012

В основном то, что я делаю сейчас:

Во время инициализации

  • создать соединение и сохранить его
  • создает DbDataAdapters и их команды с сохраненным соединением
  • вызовите DbDataAdapter.Fill для каждого адаптер для заполнения таблиц данных из базы данных

и при обработке запросов

  • вставка / обновление / удаление строк в DataTables
  • вызвать DbDataAdapter.Update в какой-то момент. Не обязательно каждый раз (обновление использует естественное соединение команд адаптера)

Это правильный путь, или я всегда должен создавать новое соединение при поступлении запроса, а затем назначать его DbDataAdapter.Insert / Update / DeleteCommand.Connection перед вызовом DbDataAdapter.Update? Я думаю о таких проблемах, как переподключение к БД после проблем с сетью / сервером.

Спасибо & BR -Matti

1 Ответ

0 голосов
/ 09 февраля 2012

Поскольку вы упоминаете веб-службы, подумайте о параллелизме.Что если два или более одновременных запроса обрабатываются на стороне вашего сервера.

Можно ли использовать одно и то же соединение?Можно ли использовать тот же DataAdapter?Наиболее вероятный ответ - это не так, вероятно, он не будет работать.

Таким образом, самый безопасный подход заключается в создании нового соединения и нового адаптера данных при каждом запросе.

Поскольку соединенияВ пуле не должно быть проблем с «переподключением» - пул обслуживает соединение, и рукопожатие, вероятно, было выполнено раньше.Тогда производительность не будет достигнута.

...