Nó phụ thuộc vào cách bạn tạo giao dịch.
Nếu bạn đã thực thi SQL nội dòng để bắt đầu nó (EG. BEGIN TRAN
), L2S sẽ không biết về giao dịch và sẽ tạo ra một giao dịch mới lồng nhau trong READ COMMITTED
.
Tuy nhiên, nếu bạn đã sử dụng System.Transaction hoặc đặt giao dịch trên DataContext
của mình , SubmitChanges sẽ tham gia vào giao dịch đó.
Bạn có thể thấy các giao dịch này bắt đầu và dừng trong Hồ sơ nếu bạn chọn TM: Begin Tran
và TM: Commit Tran
các lớp sự kiện.
Lưu ý:ADO.Net không phát hành BEGIN TRAN
nó cũng không phát hành SET TRANSACTION ISOLATION
theo lô, điều này được thực hiện ở cấp độ thấp hơn.
Nếu bạn thực sự muốn xác nhận hành vi, hãy tạo trình kích hoạt trên bảng chèn mức cô lập hiện tại vào bảng ghi nhật ký và kiểm tra nó.
Bạn có thể tăng mức cô lập hiện tại của mình bằng cách chạy:
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