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