Мы получаем следующее предупреждение от анализа кода в Visual Studio 2010, и мне интересно, является ли это ложным положительным результатом, о котором мы можем смело игнорировать или код должен быть реорганизован, чтобы правильно распоряжаться объект.CA2202 Предупреждение от анализа кода для утилизации OracleConnection
Соответствующий код:
public void MyFunction()
{
OracleConnection oraConnection = null;
OracleCommand oraCommand = null;
try
{
// Connect to the database
oraConnection = new OracleConnection(connectionString);
oraConnection.Open();
// Prepare and run the query
oraCommand = new OracleCommand(sqlQuery, oraConnection);
oraCommand.ExecuteNonQuery();
}
catch { throw; }
finally
{
// Perform a safe cleanup
if (oraCommand != null) { oraCommand.Dispose(); }
if (oraConnection != null)
{
oraConnection.Close();
oraConnection.Dispose();
}
}
}
Соответствующее сообщение об ошибке:
Предупреждение 18 CA2202: Microsoft.Usage: Объект 'oraConnection' могут быть расположены более , чем один раз в методе «ClassName. MyFunction()». Чтобы избежать генерации System.ObjectDisposedException, вы не должны вызывать Dispose более одного времени на объект.
Я окунулся в документацию Oracle для ODP.NET, и они указывают, что OracleConnection.Dispose() вызывает метод Close, поэтому похоже, что рекомендации будут обновлены, чтобы просто вызвать метод Dispose. – rjzii