Tôi muốn sử dụng TransactionScope
trong dự án của mình. Tôi đọc về nó và tôi thấy rằng nó tạo ra một giao dịch tiềm ẩn trong cơ sở dữ liệu. Tôi muốn biết liệu các bảng khóa TransactionScope
có thao tác không?Bảng khóa giao dịchScope và IsolationLevel
Ví dụ trong mã này:
using (Entities ent = new Entities())
{
using (TransactionScope tran = Common.GetTransactionScope())
{
var oldRecords = ent.tblUser.Where(o => o.UserID == UserID);
foreach (var item in oldRecords)
{
ent.tblUser.DeleteObject(item);
}
và
public static TransactionScope GetTransactionScope()
{
TransactionOptions transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
return new TransactionScope(TransactionScopeOption.Required, transactionOptions);
}
là tblUser
khóa đến khi vấn đề Complete
lệnh?
Có IsolationLevel
trong giao dịch rõ ràng tương tự như giao dịch ngầm không?
Cảm ơn
Câu trả lời hay. @marc_s ở trên mã nếu tôi xóa bản ghi với 'ID = 1' và trong thời điểm đó, một chuỗi khác muốn đọc' ID = 1' điều gì đã xảy ra? Bạn nói rằng tôi sẽ nhận được khóa độc quyền nhưng 'TransactionScope' có khóa ẩn? – Arian
Nếu giao dịch 'DELETE' của bạn nhận khóa độc quyền, không giao dịch nào khác có thể đọc hàng này - nó sẽ bị khóa và có thể sẽ hết thời gian chờ –