分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

.NET Core下的TransactionScope

发布时间:2023-09-06 02:24责任编辑:苏小强关键词:.NET

.NET FrameWork时期:

TransactionScope是FCL System.Transactions命名空间下的分布式事务组件,它默认为本地事务,当系统有需要时可以自动提升为分布式事务,前提是要开启MSDTC服务。

注:SQL2008及以上数据库,只有不同的数据库时才会认为他是一个分布式事务,即:SQL链接串不同时,才会被提升为MSDTC

创建新的TransactionScope对象后,将启动事务范围。如下代码所示:

void RootMethod(){ ????using(TransactionScope scope = new TransactionScope()) ????{ ?????????/* Perform transactional work here */ ?????????SomeMethod(); ?????????scope.Complete(); ????}}void SomeMethod(){ ????using(TransactionScope scope = new TransactionScope()) ????{ ?????????/* Perform transactional work here */ ?????????scope.Complete(); ????}}

.NET Framework 4.5.0时System.Transactions.TransactionScope 在与 async/await 一起工作时会产生一个严重的 bug 。由于这个错误,TransactionScope 不能在异步代码中正常操作。

4.5.1修复了这个问题,在构造函数中指定:TransactionScopeAsyncFlowOption.Enabled 

默认TransactionScopeAsyncFlowOption是Suppress,兼容4.5.1之前的版本

.NET Core时期:

自版本2.1起,.NET Core中的System.Transactions实现不包括对分布式事务的支持,因此不能使用TransactionScope或CommittableTransaction来跨多个资源管理器协调事务。

.NET Core下的TransactionScope

原文地址:https://www.cnblogs.com/chuankang/p/10045592.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved