ADO.NET: ExecuteScalar закрывает соединение автоматически? - PullRequest
2 голосов
/ 12 июля 2010

ExecuteScalar закрывает соединение автоматически?

Ответы [ 3 ]

6 голосов
/ 12 июля 2010

Нет, вам нужно явно открывать и закрывать соединение при использовании ExecuteScalar ().

5 голосов
/ 12 июля 2010

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

public static object ExecuteScalar(this IDbCommand Command, bool CloseConnetion)
{

    (if Command == null)
        throw new NullReferenceException();

    object obj = null;

    try
    {
      obj = Command.ExecuteScalar();        
    }
    finally
    {
      if(CloseConnection && Command.Connection.State != ConnectionState.Closed)
        Command.Connection.Close();    
    }

    return obj;
}
3 голосов
/ 12 июля 2010

Это зависит.
Можно написать реализацию IDbCommand, которая закроет соединение.
Но, насколько мне известно, предоставленные реализации не закрывают соединение.

...