Ho una query di lettura che eseguo all'interno di una transazione in modo da poter specificare il livello di isolamento. Una volta completata la query, cosa devo fare?
- Effettua il commit della transazione
- Ripristina la transazione
- Non fare nulla (ciò causerà il rollback della transazione alla fine del blocco using)
Quali sono le implicazioni di fare ciascuno?
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 domanda non è se una transazione deve essere utilizzata o se ci sono altri modi per impostare il livello di transazione. La domanda è se fa qualche differenza che una transazione che non modifica nulla venga salvata o annullata. C'è una differenza di prestazioni? Influisce su altre connessioni? Altre differenze?