¿Debo llamar a los parámetros? ¿Borrar cuando reutilizo un SqlCommand con una transformación?

Estoy codificando una transacción manualmente en ADO.NET. El ejemplo en el que estoy trabajando reutiliza elSqlCommand Lo que parece una buena idea.

Sin embargo, he añadido parámetros a mi comando.

Mi pregunta es: en el siguiente código, escommand.Parameters.Clear() ¿correcto? ¿O lo estoy haciendo mal?

using (var connection = new SqlConnection(EomAppCommon.EomAppSettings.ConnStr))
{
    connection.Open();
    SqlTransaction transaction = connection.BeginTransaction();
    SqlCommand command = connection.CreateCommand();
    command.Transaction = transaction;
    try
    {
        foreach (var itemIDs in this.SelectedItemIds)
        {
            command.CommandText = "UPDATE Item SET payment_method_id = @batchID WHERE id in (@itemIDs)";
            // IS THE FOLLOWING CORRECT?
            command.Parameters.Clear();

            command.Parameters.Add(new SqlParameter("@batchID", batchID));
            command.Parameters.Add(new SqlParameter("@itemIDs", itemIDs));
            command.ExecuteNonQuery();
        }
        transaction.Commit();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Failed to update payment batches, rolling back." + ex.Message);
        try
        {
            transaction.Rollback();
        }
        catch (Exception exRollback)
        {
            if (!(exRollback is InvalidOperationException)) // connection closed or transaction already rolled back on the server.
            {
                MessageBox.Show("Failed to roll back. " + exRollback.Message);
            }
        }
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta