我想在我的項目中使用TransactionScope
。我閱讀了它,發現它在數據庫中創建了一個隱式事務。我想知道TransactionScope
是否鎖定它操縱的表格?TransactionScope鎖定表和IsolationLevel
例如在此代碼:
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);
}
和
public static TransactionScope GetTransactionScope()
{
TransactionOptions transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
return new TransactionScope(TransactionScopeOption.Required, transactionOptions);
}
被鎖定tblUser
直到Complete
命令問題?
是否IsolationLevel
在顯式事務中類似於隱式事務?
感謝
很好的答案。 @marc_s在上面的代碼中,如果我刪除了'ID = 1'的記錄,那時候另一個線程想要讀'ID = 1'發生了什麼?你說我應該得到排他鎖,但'TransactionScope'得到隱式鎖? – Arian
如果您的DELETE事務獲得排他鎖,則其他事務不能讀取此行 - 它將被鎖定,並且可能會超時 –