J'ai une requête en lecture que j'exécute à l'intérieur d'une transaction de sorte que je peux spécifier le niveau d'isolation. Une fois la requête terminée, que dois-je faire?
- Valider la transaction
- Annuler la transaction
- Ne rien faire (ce qui sera la cause de la transaction à être annulées à la fin de l'utilisation de bloc)
Quelles sont les implications de chaque?
using (IDbConnection connection = ConnectionFactory.CreateConnection())
{
using (IDbTransaction transaction = connection.BeginTransaction(IsolationLevel.ReadUncommitted))
{
using (IDbCommand command = connection.CreateCommand())
{
command.Transaction = transaction;
command.CommandText = "SELECT * FROM SomeTable";
using (IDataReader reader = command.ExecuteReader())
{
// Read the results
}
}
// To commit, or not to commit?
}
}
EDIT: La question n'est pas si une transaction doit être utilisé ou s'il existe d'autres moyens pour régler le niveau de la transaction. La question est de savoir si cela fait une différence que l'une transaction qui ne permet pas de modifier quoi que ce soit est validée ou annulée. Est-il une différence de performance? Il n'affecte pas les autres connexions? Toutes les autres différences?