ant*_*liu 1 c# asp.net entity-framework transactionscope
在交易中,我有以下内容,MyEntities是我的上下文:
TransactionOptions options = new TransactionOptions();
options.Timeout = TimeSpan.FromMinutes(1);
options.IsolationLevel = IsolationLevel.Serializable;
using(TransactionScope scope =
new TransactionScope(TransactionScopeOption.Required, options))
{
//Do something to database table MyEntities.Users
}
Run Code Online (Sandbox Code Playgroud)
是否使我的隔离级别可序列化,以便如果我的代码中的其他任何地方我有这样的东西
MyEntities.Users.First(x=>x.name == "test")
该行代码将等到事务范围完全完成,或者该行代码是否需要包含在using(TrnasactionScope...语句中以使其遵循事务隔离级别的规则。
隔离级别本身什么都不做;重要的是当您开始查询数据时会发生什么。特别是,你开始到处留下读锁和键范围锁。如果另一个查询命中其中一个锁并且正在读取,那很好:读取锁通常是兼容的。显然,其他 SPID 的隔离级别也很重要 - 未提交读的 SPID 不会关心您正在进行的操作,而更高的隔离会。
开始变得更复杂的是当 SPID 之一开始写入数据时;如果多个 SPID 已经对同一数据具有读锁,则可能导致死锁。
但不是:事务范围不会阻塞其他所有内容,尤其是当它们只是读取时。对于它的作用......这很复杂,只能根据具体情况进行分析。
| 归档时间: |
|
| 查看次数: |
1266 次 |
| 最近记录: |