Envoi de plusieurs commandes SQL en une seule transaction

J'ai une liste énorme de INSERT INTO ... cordes. Actuellement, je les exécuter avec:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    foreach (var commandString in sqlCommandList)
    {
        SqlCommand command = new SqlCommand(commandString, connection);
        command.ExecuteNonQuery();
    }
}

Je vois que chaque ExecuteNonQuery() est également responsable de la commettre.

  1. Est-il un moyen d'insérer toutes les lignes en une seule transaction (commit à la fin)?
  2. La raison pour laquelle je tiens une seule opération est de faire mon "inserts" processus plus rapide. Une seule opération aussi de le rendre plus rapide?

source d'informationauteur Bick