C # IDisposable Using: Best Practice

I уже некоторое время оборачивают свои объекты OracleConnection и OracleCommand в операторы USING, однако после запуска анализатора кода я обнаружил, что OracleParameter также реализует IDisposable. Правильный ли следующий код? Есть ли лучший метод для удобочитаемости или структуры? На первый взгляд кажется, что здесь просто загромождены операторы USING:

using (OracleConnection conn = new OracleConnection(connectionstring))
{
    conn.Open();
    using (OracleCommand cmd = new OracleCommand(sql, conn))
    {
        cmd.BindByName = true;

        using (OracleParameter param1 = new OracleParameter("p1", OracleDbType.Int32, System.Data.ParameterDirection.Input))
        {
            param1.Value = int.Parse(value1);
            cmd.Parameters.Add(param1);
        }

        using (OracleParameter param2 = new OracleParameter("p2", OracleDbType.Varchar2, System.Data.ParameterDirection.Input))
        {
            param2.Value = value2;
            cmd.Parameters.Add(param2);
        }

        using (OracleDataReader dr = cmd.ExecuteReader())
        {
            // loop data here...
        }
    }
}
8
задан Shawn 21 October 2011 в 18:28
поделиться