.NET Core/.NET 5+中如何设置TransactionScope的事务隔离级别?
在.NET Core/.NET 5+中设置TransactionScope的事务隔离级别
你提到的.NET Framework中通过TransactionOptions设置隔离级别的方式,在.NET Core/.NET 5+中依然可用,只是需要注意构造方法的重载组合——要同时传入TransactionOptions和TransactionScopeAsyncFlowOption参数。
针对你的场景,修改代码如下,即可将事务隔离级别设置为READ COMMITTED:
try { // 定义事务选项,设置隔离级别为READ COMMITTED var transactionOptions = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted, // 可选:自定义事务超时时间,默认使用环境的超时配置 Timeout = TransactionManager.DefaultTimeout }; // 同时传入事务选项和异步流启用选项 using (TransactionScope transaction = new TransactionScope(transactionOptions, TransactionScopeAsyncFlowOption.Enabled)) { UpdateTable1(); UpdateTable2(); transaction.Complete(); } } catch { // 事务回滚逻辑 }
关键说明
- 默认情况下,
TransactionScope的隔离级别是SERIALIZABLE,这种级别会持有更严格的锁且持续时间更长,确实容易引发死锁问题;切换到READ COMMITTED是降低死锁概率的有效手段之一。 - 确保代码引用了
System.Transactions命名空间,TransactionOptions和IsolationLevel都来自该命名空间。
内容的提问来源于stack exchange,提问作者Patrick Szalapski
相关产品推荐
相关产品推荐

