Ответ
В .NET, при использовании TransactionScope, по умолчанию применяется уровень изоляции ReadCommitted.
Почему именно он? Это баланс между производительностью и целостностью данных. Он предотвращает чтение "грязных" данных (незафиксированных изменений других транзакций), но допускает неповторяемые чтения и фантомные чтения, что повышает параллелизм.
Пример использования по умолчанию:
using (var transaction = new TransactionScope())
{
// Операции с базой данных будут выполняться в ReadCommitted
using (var connection = new SqlConnection(connectionString))
{
// ... выполнение команд
}
transaction.Complete(); // Фиксация транзакции
}
Как изменить уровень изоляции явно:
var options = new TransactionOptions
{
IsolationLevel = IsolationLevel.Serializable // Или другой уровень
};
using (var transaction = new TransactionScope(TransactionScopeOption.Required, options))
{
// Операции с базой данных
transaction.Complete();
}
Важно: Фактический уровень изоляции также зависит от настроек и возможностей самой СУБД (SQL Server, PostgreSQL и т.д.).