Nous recevons l'avertissement suivant de l'analyse de code dans Visual Studio 2010 et je me demande s'il s'agit d'un faux positif que nous pouvons ignorer en toute sécurité ou le code doit être refactorisé pour disposer correctement le objet.CA2202 Mise en garde de Code Analysis for OracleConnection élimination
Le code correspondant:
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();
}
}
}
Le message d'erreur correspondant:
Warning 18 CA2202: Microsoft.Usage: Object 'oraConnection' peut être disposé plus d'une fois dans la méthode « NomClasse. MyFunction() '. Pour éviter de générer une exception System.ObjectDisposedException, vous ne devez pas appeler Dispose plus d'une heure sur un objet.
J'ai cherché dans la documentation Oracle pour ODP.NET et ils ont indiqué que OracleConnection.Dispose() appelait la méthode Close afin que les directives soient mises à jour pour appeler la méthode Dispose. – rjzii