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


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

Определение

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

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

Поля

Имя Значение Описание
Serializable 0

Переменные данные можно считывать, но не изменять, а новые данные нельзя добавлять во время транзакции.

RepeatableRead 1

Переменные данные можно считывать, но не изменять во время транзакции. Новые данные можно добавить во время транзакции.

ReadCommitted 2

Переменные данные нельзя считывать во время транзакции, но их можно изменить.

ReadUncommitted 3

Переменные данные можно считывать и изменять во время транзакции.

Snapshot 4

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

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

Chaos 5

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

Unspecified 6

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

Комментарии

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

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

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

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