Tengo una consulta de lectura que ejecuto dentro de una transacción para poder especificar el nivel de aislamiento. Una vez completada la consulta, ¿qué debo hacer?
- Confirmar la transacción
- Revertir la transacción
- No hacer nada (lo que hará que la transacción se revierta al final del bloque de uso)
¿Cuáles son las implicaciones de hacer cada uno?
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?
}
}
EDITAR: La pregunta no es si se debe usar una transacción o si hay otras formas de establecer el nivel de transacción. La pregunta es si hace alguna diferencia que una transacción que no modifica nada se confirme o se deshaga. ¿Existe alguna diferencia de rendimiento? ¿Afecta a otras conexiones? ¿Alguna otra diferencia?