我想在我的项目中使用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事务获得排他锁,则其他事务不能读取此行 - 它将被锁定,并且可能会超时 –