Asp.net панель обновления ajax, разделяющая соединение с базой данных - PullRequest
0 голосов
/ 16 ноября 2008

У меня есть выпадающий список и буквенный тег внутри панели обновления. В случае события изменения выбора в раскрывающемся списке запрашивать базу данных и заполнять литеральный тег, а затем вызывать UPdatePanel.Update ().

ниже, есть способ, которым я могу избежать создания нового Oledbconnection каждый раз, так как это кажется медленным. Могу ли я повторно использовать и хранить:

  1. Источник данных
  2. Соединение на странице.

если это так, как мне сохранить это состояние между вызовами из графического интерфейса на сервер? Вот мой код изменения выбора ниже

protected void cboPeople_SelectedIndexChanged(object sender, EventArgs e)
{
    string dataSource = ConfigurationSettings.AppSettings["contactsDB"];
    var objConn = new OleDbConnection(dataSource);
    string id = People[cboPeople.Text];
    UpdateLiteral(objConn, id);
}

Ответы [ 2 ]

1 голос
/ 16 ноября 2008

С .NET не стоит поддерживать ваше соединение живым дольше, чем нужно. Хорошей практикой было бы поместить в него оператор использования (чтобы он всегда очищался):

string dataSource = ConfigurationSettings.AppSettings["contactsDB"];
using(var objConn = new OleDbConnection(dataSource))
{
    string id = People[cboPeople.Text];
    UpdateLiteral(objConn, id);
}

.NET использует пул соединений , что означает, что когда вы закрываете / удаляете соединение, оно фактически не закрывает соединение, а скорее сбрасывает его и добавляет обратно в пул. В следующий раз, когда требуется соединение, оно используется из пула. Таким образом, накладные расходы не так много, как вы думаете, и это не медленно. На самом деле вы обнаружите, что он будет использовать одно и то же соединение, если требуется только одно соединение за раз.

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

0 голосов
/ 16 ноября 2008

Вам нужно пересоздать это для каждого запроса. У вас есть сервер без состояния. Вы никогда не знаете, когда или если ваш клиент перезвонит. Вы не хотите сохранять открытое соединение с базой данных, и при этом вы не могли бы просто обслуживать несколько клиентов, поддерживая одно соединение с базой данных.

Для развертывания высокопроизводительных приложения, вы должны использовать подключение Пулы. Когда вы используете .NET Framework Data Provider для OLE DB, вам не нужно включать соединение пул, потому что провайдер управляет это автоматически. Для большего информация о том, как использовать пул соединений с .NET Framework Data Provider для OLE DB, см. OLE DB, ODBC и Oracle Пул подключений (ADO.NET). С Класс OleDbConnection

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...