You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:35:43