WF4:TransactionScope活动

简介:

在WF4.0中,主要有两个和事务处理有关的类,TransactionScope和TransactedReceivescope。TransactionScope是用于一般工作流应用程序中的事务处理,TransactedReceivescope则是用于WCF的分布式应用程序中,可用于客户端和服务器的工作流通信。 

本文主要说明TransactionScope活动的用法,当TransactionScope活动开始就会有一个新的System.Transactions.Transaction 事务,当内部活动都执行完成后会提交事务。
 

该活动主要有以下属性:

Body:为事务中要执行的活动。

TimeOut:事务的过期时间。

AbortInstanceOnTransactionFailure:事务取消时是否取消工作流的执行。

IsolationLevel 指定事务的隔离级别,有下列值:

成员名称

说明

Unspecified

正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。

Chaos

无法覆盖隔离级别更高的事务中的挂起的更改。

ReadUncommitted

可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。

ReadCommitted

在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。

RepeatableRead

在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻像行。

Serializable

防止在事务完成之前由其他用户更新或插入数据。

Snapshot

通过在一个应用程序正在修改数据时存储另一个应用程序可以读取的相同数据版本来减少阻止。表示您无法从一个事务中看到在其他事务中进行的更改,即便重新查询也是如此。

 

多个TransactionScope活动嵌套的时候,如果内部的TransactionScope活动过期时间小于外部的TransactionScope活动过期时间。当这些TransactionScope活动的AbortInstanceOnTransactionFailure属性都为true时,工作流会取消,将激发工作流的Aborted事件。如果该属性设置不一致,False会激发工作流的OnUnhandledException事件。 

可以通过RuntimeTransactionHandleGetCurrentTransaction方法得到当前事务,如下:

  RuntimeTransactionHandle rth = new RuntimeTransactionHandle();

  rth = context.Properties.Find(rth.ExecutionPropertyName) as RuntimeTransactionHandle;

  Console.WriteLine("    TransactionID: " + rth.GetCurrentTransaction(context).TransactionInformation.LocalIdentifier.ToString());

 

使用rth.GetCurrentTransaction(context).Rollback(e)可以回滚当前事务 

原理和WF3.X的差不多,可以参考http://www.cnblogs.com/carysun/archive/2008/08/14/WFTransaction.html


本文转自生鱼片博客园博客,原文链接:http://www.cnblogs.com/carysun/archive/2009/12/02/WF4-TransactionScope.html,如需转载请自行联系原作者

相关文章
5 天学会阿里云 RPA:高级技巧
随着数字化转型的加速,企业对于自动化和效率的需求日益增长。阿里云 RPA(Robotic Process Automation)作为一种智能自动化技术,正逐渐成为企业流程优化和业务创新的利器。本文将介绍一些阿里云 RPA 的高级技巧,帮助你更好地利用这项技术来提升业务效率。
|
4月前
|
新一代 Cron-Job分布式调度平台,v1.0.8版本发布,支持Go执行器SDK!
现代化的Cron-Job分布式任务调度平台,支持Go语言执行器SDK,多项核心优势优于其他调度平台。
83 8
一文详述:AI 网关与 API 网关到底有什么区别?
近年来,AI发展迅猛,大模型成为推动业务创新的关键力量。企业面临如何安全管理和部署AI应用的挑战,需设计既能满足当前需求又可适应未来发展的基础架构。AI网关应运而生,在集成、管理和优化AI应用中扮演重要角色。本文探讨AI网关与API网关的区别,分析AI系统为何需要专门网关,并提供选择合适AI网关的建议。AI网关不仅支持多种模型,还具备高级安全性和性能优化功能,有助于企业在复杂环境中灵活应用AI技术。
418 1
1.Cesium介绍及环境配置
本文中我们介绍了cesium开发环境的配置,以及vue中cesium页面的初始化
682 0
Redis原理—4.核心原理摘要
Redis 是一个基于内存的高性能NoSQL数据库,支持分布式集群和持久化。其网络通信模型采用多路复用监听与文件事件机制,通过单线程串行化处理大量并发请求,确保高效运行。本文主要简单介绍了 Redis 的核心特性。
|
11月前
|
14 response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file speci
14 response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file speci
228 1
透视与正交之外的奇妙视界:深入解析Unity游戏开发中的相机与视角控制艺术,探索打造沉浸式玩家体验的奥秘与技巧
【8月更文挑战第31天】在Unity中,相机不仅是玩家观察游戏世界的窗口,更是塑造氛围和引导注意力的关键工具。通过灵活运用相机系统,开发者能大幅提升游戏的艺术表现力和沉浸感。本文将探讨如何实现多种相机控制,包括第三人称跟随和第一人称视角,并提供实用代码示例。
500 0
【颠覆传统!】揭秘Databricks如何助力零售业需求预测——从数据到洞察,一秒钟变销售预言家!
【8月更文挑战第9天】随着大数据技术的发展,数据驱动决策日益关键,尤其在零售业中,通过分析历史销售数据预测未来趋势变得至关重要。本文探讨如何运用Databricks平台优化零售业需求预测。Databricks是一个基于Apache Spark的统一数据分析平台,能高效处理大规模数据任务。通过示例代码展示数据读取、预处理及建模过程,相较于传统方法,Databricks在数据处理能力、可扩展性、内置机器学习库以及协作版本控制方面展现出显著优势,帮助零售商优化库存管理、提升客户体验并增加销售额。
259 8
mysql进阶优化篇04——深入JOIN语句的底层原理
文章目录 1.驱动表和被驱动表 2.Simple Nested-Loop Join(简单的嵌套循环连接) 3.Index Nested-Loop Join(索引嵌套循环连接) 4 Block Nested-Loop Join(快嵌套循环连接) 5 JOIN小结 6 hash join
mysql进阶优化篇04——深入JOIN语句的底层原理
TuGraph Analytics图数据集成:表到图的最后一公里
小伙伴们想玩一玩图计算,数据的导入工作总是绕不开的一个环节。为了降低大家数据导入操作的成本,提升图计算的整体使用体验,TuGraph Analytics推出了“图数据集成”能力,帮助大家通过简单配置完成数据导入工作。
TuGraph Analytics图数据集成:表到图的最后一公里
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问