У мене є запит на читання, який я виконую в рамках транзакції, щоб я міг вказати рівень ізоляції. Що робити після завершення запиту, що мені робити?
- Здійснити транзакцію
- Відкат транзакції
- Нічого не робити (що призведе до відкочування транзакції в кінці використовуваного блоку)
Які наслідки має виконання кожного з них?
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: Питання не в тому, чи слід використовувати транзакцію, чи існують інші способи встановити рівень транзакції. Питання полягає в тому, чи має значення різниця в тому, що транзакція, яка нічого не змінює, є скоєною або відкатаною. Чи є різниця в продуктивності? Чи впливає це на інші зв’язки? Будь-які інші відмінності?