Det beror på hur du skapade transaktionen.
Om du körde inline SQL för att starta den (t.ex. BEGIN TRAN
), kommer L2S inte att vara medveten om transaktionen och kommer att skapa en ny kapslad i READ COMMITTED
.
Men om du använde System.Transaction eller har en transaktion inställd på din DataContext
, SubmitChanges kommer att delta i den transaktionen.
Du kan se dessa transaktioner starta och stoppa i Profiler om du väljer TM: Begin Tran
och TM: Commit Tran
evenemangsklasser.
Obs:ADO.Net utfärdar inte BEGIN TRAN
Det utfärdar inte heller SET TRANSACTION ISOLATION
i partier görs detta på en lägre nivå.
Om du verkligen vill bekräfta beteendet, skapa en trigger på en tabell som infogar den aktuella isoleringsnivån i en loggningstabell och kontrollera den.
Du kan hämta din nuvarande isoleringsnivå genom att köra:
SELECT CASE transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'Read Uncommitted'
WHEN 2 THEN 'Read Committed'
WHEN 3 THEN 'Repeatable Read'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL
FROM sys.dm_exec_sessions
where session_id = @@SPID