2012-03-23 24 views
8

Tôi biết rằng nếu tôi sử dụng System.Transactions.TransactionScope và không chỉ định mức cách ly, nó sẽ mặc định là Serializable. Tuy nhiên, điều gì xảy ra nếu tôi không sử dụng phạm vi giao dịch và tôi chỉ sử dụng bộ điều hợp bảng cũ? Mức cô lập mặc định là gì?Mức cô lập ADO.NET mặc định là gì?

Rất cám ơn trước.

+5

Nó là phức tạp hơn; mức cô lập không được đặt lại giữa các lần sử dụng kết nối gộp, do đó nó cũng phụ thuộc vào "sử dụng cuối cùng của kết nối cơ bản đang làm" –

+0

@MarcGravell Vâng, đó là điều tuyệt vời, cảm ơn. Một đồng nghiệp của tôi vừa gửi cho tôi một liên kết đề cập đến cùng một điều. Không chính xác hố thành công, và làm thế nào tôi đã không nhận thấy nó trong 7 năm sử dụng. NET Tôi không có ý tưởng ... –

+0

Nhưng "mặc định mặc định" có thể đọc cam kết –

Trả lời

3

Bạn có thể không muốn dựa vào mặc định nếu bạn cần tuyệt đối về các dữ liệu ứng dụng của bạn. Những điều này có thể thay đổi giữa các phiên bản khung công tác.

Rất khuyên bạn nên rõ ràng về mức độ cô lập và cài đặt phiên trên tất cả các cuộc gọi dữ liệu - qua TransactionScope (có thể có nghĩa là leo thang DTC tùy thuộc vào hoàn cảnh) hoặc rõ ràng trong lệnh gọi proc được lưu trữ đích (nếu đó là tuyến đường được thực hiện).

tin chi tiết về DTC/TransactionScope: https://stackoverflow.com/a/9075800/1568341

TL; DR

A: đọc cam kết cho SQLs nhưng không giả một mặc định

Các vấn đề liên quan