Поделиться через


IsolationLevel Перечисление

Определение

Указывает уровень изоляции транзакции.

public enum class IsolationLevel
public enum IsolationLevel
type IsolationLevel = 
Public Enum IsolationLevel
Наследование
IsolationLevel

Поля

Chaos 5

Ожидающие изменения более изолированных транзакций не могут быть перезаписаны.

ReadCommitted 2

Во время обработки транзакции переменные данные не могут считываться, но могут изменяться.

ReadUncommitted 3

Во время обработки транзакции переменные данные могут считываться и изменяться.

RepeatableRead 1

Во время обработки транзакции переменные данные могут считываться, но не могут изменяться. В ходе транзакции возможно добавление новых данных.

Serializable 0

Во время обработки транзакции переменные данные могут считываться, но не могут изменяться. Добавление новых данных невозможно.

Snapshot 4

Переменные данные могут считываться. Перед тем, как транзакция изменяет данные, она проверяет, не изменены ли данные другой транзакцией после их первоначального считывания. Если данные обновлены, возникает ошибка. Это позволяет транзакции получить значение данных, зафиксированное ранее.

При попытке повысить уровень транзакции, созданной с помощью уровня изоляции Snapshot, возникает исключение InvalidOperationException с сообщением об ошибке: "Для транзакций с моментальным снимком IsolationLevel нельзя повысить уровень".

Unspecified 6

Используется уровень изоляции, отличный от указанного, однако этот уровень не может быть определен. При задании этого значения вызывается исключение.

Комментарии

Данные, затронутые транзакцией, называются переменными. При создании транзакции можно указать уровень изоляции, применяемый к этой транзакции. Уровень изоляции транзакции определяет уровень доступа других транзакций к изменчивым данным до завершения транзакции.

Самый низкий уровень ReadUncommittedизоляции, , позволяет нескольким транзакциям работать с хранилищем данных одновременно и не обеспечивает защиту от повреждения данных из-за прерываний транзакций. Самый высокий уровень изоляции , Serializableобеспечивает высокую степень защиты от прерываний транзакций, но требует завершения каждой транзакции, прежде чем другим транзакциям будет разрешено работать с данными.

Уровень изоляции транзакции определяется при ее создании. По умолчанию System.Transactions инфраструктура создает Serializable транзакции. Уровень изоляции существующей транзакции можно определить с помощью Transaction.IsolationLevel свойства транзакции.

Применяется к