asp.net; repeatater.databind и закрытие соединения с базой данных - PullRequest
0 голосов
/ 16 декабря 2009

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

здесь приведен фрагмент кода, содержащийся в методе класса-оболочки для ent. Lib.

public SqlDataReader RunQuery(string strQuery)
{
    Database db = DatabaseFactory.CreateDatabase();
    string sqlCommand = strQuery;
    DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);
    return (SqlDataReader)db.ExecuteReader(dbCommand,CommandBehavior.CloseConnection);
}

Уровень представления вызывает метод класса-оболочки, содержащий приведенный выше код, подобный этому

SQLwrap sr = new SQLwrap();
Repeater1.DataSource = sr.RunQuery("select ....");
Repeater1.DataBind();

это правильный способ сделать это?

Мне кажется, я где-то давно читал, что repeater.databind автоматически закрывает соединение, но сейчас я не уверен в этом.

Хорошо, если он закрывает соединение, то в случае, если это не повторитель, как можно гарантировать, что соединение было закрыто?

Спасибо.

1 Ответ

0 голосов
/ 16 декабря 2009

Да. Все соединения с БД закрываются после вызова команды и возврата запроса.

Когда вы создали свой объект БД в функции, он выходит из области видимости и соединение закрывается после получения результатов.

См. этот вопрос для потенциальных проблем.

...