コード分析の警告を生成するいくつかのレガシー コードでこれを見てきました。
Database db = DatabaseFactory.CreateDatabase(strDBCon);
DbCommand dbCommand = db.GetSqlStringCommand(sb.ToString());
using (IDataReader dataReader = db.ExecuteReader(dbCommand))
{
while (dataReader.Read())
{
}
dataReader.Close(); // <-- this is redundant as close is covered by using's implicit dispose
}
dbCommand.Connection.Close();
dbCommand.Dispose();
db = null;
ここで、dbCommand を破棄するだけでなく、dbCommand.Connection プロパティを閉じる必要があることを SO で読みました。私は、dbCommand が子の使い捨てオブジェクト (この場合は Connection. そうでない場合、なぜですか?