У меня есть запрос на чтение, который я выполняю в транзакции, чтобы я мог указать уровень изоляции. Что мне делать после завершения запроса?
- Зафиксировать транзакцию
- Откатить транзакцию
- Ничего не делать (что приведет к откату транзакции в конце блока using)
Каковы последствия каждого из них?
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: вопрос не в том, следует ли использовать транзакцию или есть ли другие способы установить уровень транзакции. Вопрос в том, имеет ли значение то, что транзакция, которая ничего не изменяет, фиксируется или откатывается. Есть разница в производительности? Влияет ли это на другие подключения? Есть ли другие отличия?