Condividi tramite


IsolationLevel Enumerazione

Definizione

Specifica il livello di isolamento di una transazione.

public enum class IsolationLevel
public enum IsolationLevel
type IsolationLevel = 
Public Enum IsolationLevel
Ereditarietà
IsolationLevel

Campi

Nome Valore Descrizione
Serializable 0

I dati volatili possono essere letti ma non modificati e non è possibile aggiungere nuovi dati durante la transazione.

RepeatableRead 1

I dati volatili possono essere letti ma non modificati durante la transazione. È possibile aggiungere nuovi dati durante la transazione.

ReadCommitted 2

I dati volatili non possono essere letti durante la transazione, ma possono essere modificati.

ReadUncommitted 3

I dati volatili possono essere letti e modificati durante la transazione.

Snapshot 4

I dati volatili possono essere letti. Prima che una transazione modifichi i dati, verifica se un'altra transazione ha modificato i dati dopo la lettura iniziale. Se i dati sono stati aggiornati, viene generato un errore. Ciò consente a una transazione di accedere al valore di cui è stato eseguito il commit in precedenza dei dati.

Quando si tenta di alzare di livello una transazione creata con il Snapshot livello di isolamento, viene generata un'eccezione InvalidOperationException con il messaggio di errore "Transazioni con IsolationLevel Snapshot non può essere alzato di livello".

Chaos 5

Non è possibile sovrascrivere le modifiche in sospeso da transazioni più isolate.

Unspecified 6

Viene usato un livello di isolamento diverso da quello specificato, ma non è possibile determinare il livello. Se questo valore è impostato, viene generata un'eccezione.

Commenti

I dati interessati da una transazione sono denominati volatili. Quando si crea una transazione, è possibile specificare il livello di isolamento applicabile alla transazione. Il livello di isolamento di una transazione determina il livello di accesso di altre transazioni ai dati volatili prima del completamento di una transazione.

Il livello di isolamento più basso, ReadUncommitted, consente a molte transazioni di operare contemporaneamente su un archivio dati e non offre alcuna protezione contro il danneggiamento dei dati a causa di transazioni interrotte. Il livello di isolamento più elevato, Serializable, offre un livello elevato di protezione dalle transazioni interruptive, ma richiede che ogni transazione venga completata prima che tutte le altre transazioni siano autorizzate a operare sui dati.

Il livello di isolamento di una transazione viene determinato quando viene creata la transazione. Per impostazione predefinita, l'infrastruttura System.Transactions crea Serializable transazioni. È possibile determinare il livello di isolamento di una transazione esistente usando la Transaction.IsolationLevel proprietà di una transazione.

Si applica a