SqlConnection
は適切に処分されていますか?内部でSqlConnectionを適切に処分する
/// <summary>
/// Executes the stored procedure using the parameters.
/// </summary>
/// <param name="storedProcedureName"></param>
/// <param name="parameters"></param>
/// <param name="timeoutValue"></param>
/// <returns></returns>
public DataSet ExecuteStoredProcedure(string storedProcedureName, List<SqlParameter> parameters, int timeoutValue = 0)
{
var ds = new DataSet();
var sqlConnection = (SqlConnection)Database.Connection;
using (var command = new SqlCommand(storedProcedureName, sqlConnection))
{
//setting CommandTimeout specified value
if (timeoutValue > 0)
{
command.CommandTimeout = timeoutValue;
}
command.CommandType = CommandType.StoredProcedure;
foreach (var param in parameters)
{
command.Parameters.Add(param);
}
_databaseHelper.OpenConnection(command);
var adapter = new SqlDataAdapter(command);
adapter.Fill(ds);
_databaseHelper.CloseConnection(command);
}
return ds;
}
これは '_databaseHelper.CloseConnection()'が何をするかによってまったく決まります。 'Database.Connection'の使用も容認されています - 一般にあなたは他の場所に所有されているものの' Dispose() 'をしたくないでしょう。 'Database.Connection'が毎回新しい接続インスタンスを返す場合は、' GetConnection() 'メソッドに切り替えます。 – dahlbyk
@dahlbykなぜそれはcloseconnectionに依存しますか?この行の前に例外があればどうなりますか? –
var sqlConnection =(SqlConnection)Database.Connection;このコードが新しい接続を返す場合、私は問題がないと思います –