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

Chaos 5

Le modifiche in sospeso dalle transazioni più isolate non possono essere sovrascritte.

ReadCommitted 2

Durante la transazione non è possibile leggere i dati volatili, ma è possibile modificarli.

ReadUncommitted 3

Durante la transazione è possibile leggere e modificare i dati volatili.

RepeatableRead 1

Durante la transazione, è possibile leggere i dati volatili ma non modificarli. Durante la transazione, è possibile aggiungere nuovi dati.

Serializable 0

Durante la transazione è possibile leggere ma non modificare i dati volatili e non è possibile aggiungere nuovi dati.

Snapshot 4

È possibile leggere i dati volatili. Prima che una transazione modifichi i dati, viene verificato se un'altra transazione ha modificato i dati dopo essere stati letti. Se i dati sono stati aggiornati, viene generato un errore. In questo modo, una transazione può ottenere il valore dei dati di cui è stato precedentemente eseguito il commit.

Quando si tenta di alzare il livello di una transazione creata con il livello di isolamento Snapshot, viene generata un'eccezione InvalidOperationException con il messaggio di errore "Impossibile promuovere le transazioni con IsolationLevel Snapshot".

Unspecified 6

Verrà utilizzato un livello di isolamento diverso da quello specificato, ma il livello non potrà essere determinato. Se viene impostato questo valore, verrà generata un'eccezione.

Commenti

I dati interessati da una transazione sono denominati volatili. Quando si crea una transazione è possibile specificarne il livello di isolamento. 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, , ReadUncommittedconsente a molte transazioni di funzionare contemporaneamente in un archivio dati e non offre alcuna protezione contro il danneggiamento dei dati a causa di transazioni interrotte. Il livello di isolamento più alto, Serializable, offre un livello elevato di protezione dalle transazioni interrotte, 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