标签:style flow void .com 一起 inf 多个 图片 pre
.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来跨多个资源管理器协调事务。
标签:style flow void .com 一起 inf 多个 图片 pre
原文地址:https://www.cnblogs.com/chuankang/p/10045592.html