2012-03-23 11 views
8

So che se uso System.Transactions.TransactionScope e non si specifica un livello di isolamento, per impostazione predefinita sarà Serializable. Tuttavia, cosa succede se non utilizzo l'ambito della transazione e sto semplicemente utilizzando un adattatore da tavolo vecchio stile? Qual è il livello di isolamento predefinito, quindi?Qual è il livello di isolamento ADO.NET predefinito?

Molte grazie in anticipo.

+5

E 'più complessa; il livello di isolamento non viene ripristinato tra gli usi di una connessione in pool, quindi dipende anche da "che cosa stava facendo l'ultimo utilizzo della connessione sottostante" –

+0

@MarcGravell Sì, è grandioso, grazie. Un mio collega mi ha appena inviato un link che menzionava la stessa cosa. Non è esattamente il nocciolo del successo, e come non l'ho notato in 7 anni usando .NET. Non ho idea ... –

+0

Ma "default default" è probabilmente letto commit –

risposta

3

Potrebbe non essere necessario fare affidamento sui valori predefiniti se è necessario essere assoluti riguardo alle operazioni sui dati dell'applicazione. Queste cose possono cambiare tra le versioni del framework.

Si consiglia vivamente di specificare esplicitamente i livelli di isolamento e le impostazioni di sessione su tutte le chiamate dati, tramite TransactionScope (che può significare escalation a DTC dipendente dalle circostanze) o esplicitamente all'interno della chiamata di processo memorizzata di destinazione (se questo è un percorso).

Maggiori dettagli su DTC/TransactionScope: https://stackoverflow.com/a/9075800/1568341

TL; DR

R: Leggi impegnato per sqls ma non assumere un default

Problemi correlati