Mam zapytanie odczytu, które wykonuję w ramach transakcji, aby określić poziom izolacji. Co mam zrobić po zakończeniu zapytania?
- Zatwierdź transakcję
- Wycofaj transakcję
- Nic nie rób (co spowoduje wycofanie transakcji na końcu using bloku)
Jakie są konsekwencje wykonania każdego z nich?
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?
}
}
EDYCJA: Nie chodzi o to, czy transakcja powinna zostać użyta, czy też istnieją inne sposoby ustawienia poziomu transakcji. Pytanie brzmi, czy ma znaczenie, że transakcja, która niczego nie modyfikuje, jest zatwierdzana lub wycofywana. Czy jest różnica w wydajności? Czy ma to wpływ na inne połączenia? Jakieś inne różnice?