Depende de como você criou a transação.
Se você executou o SQL embutido para iniciá-lo (por exemplo,
BEGIN TRAN
), o L2S não estará ciente da transação e criará uma nova aninhada em READ COMMITTED
. No entanto, se você usou System.Transaction ou tem uma transação definida em seu
DataContext
, SubmitChanges participará dessa transação. Você pode ver essas transações começando e parando no Profiler se você escolher o
TM: Begin Tran
e TM: Commit Tran
aulas de eventos. Nota:ADO.Net não emite
BEGIN TRAN
nem emite SET TRANSACTION ISOLATION
em lotes, isso é feito em um nível inferior. Se você realmente deseja confirmar o comportamento, crie um gatilho em uma tabela que insira o nível de isolamento atual em uma tabela de log e verifique-o.
Você pode pegar seu nível de isolamento atual executando:
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