博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-UDA中处理事务
阅读量:6630 次
发布时间:2019-06-25

本文共 1432 字,大约阅读时间需要 4 分钟。

前文回顾
        在之前的文章 和 两篇文章中详细的介绍了如何使用UDA进行常规的业务进行操作,以及AgileEAS.NET平台中UDA的两种数据处理模式对比,以及基于懒惰模式的代理查询。
事务处理
       我们知道在应用开发中,使用单SQL语句进行业务处理永远无法满足复杂的应用,一个业务可以需要2-N条SQL语句的配合才能完成,并且要求处理的数据保持一致性,也就是要求2-N语言要么全部执行成功,要么全部失败,不能产品执行一部分另一部分因为某些原因无法执行,造成数据的不一致。
       .NET的Ado.NET为我们提供了事务处理机制,AgileEAS.ENT平台的统一数据访问(UDA)支持基于ADO.NET的事务处理机制,并对其进行了封装。
处理流程
       标准的事务处理流程是在UDA的数据操作流程的基础上增加事务的打开、提交与回滚三个操作,流程如下:
       AgileEAS.NET平台的UDA也为事务提供了一种懒得的处理模式,即事务托管执行,应用开发人员在这种模式中不用考虑连接的打和关闭,也不用考虑事务的开始、提交与回滚,而只需要关注应用业务就行。
事务处理的例子
       假定我们需要处理一个商品的入库业务,涉及三个数据表,从商品字典有查出商品字典数据,向商品入库记录表和商品库存表同步写入数据,我们假定实现以单位为采购100单位的商品编码为“1AZ0002094” ,名称为“95%医用酒精”的业务,交易价格为12.5元,处理代码如下: 
代码 
使用事务委托
       上面的单码需要应用开发人管理数据库的打开、关闭,还得处理事务的开始、提交与回滚业务,每个都如些进行处理,容易出错,程序也不是很简洁,在AgileEAS.NET平台的统一数据访问(UDA)中提供了一种更为简洁的事务处理处理方式事务委托,我们定义了TransactionHandler及TransactionHandler2两个事务委托:
///     /// 定义数据库操作的事务处理委托。该委托将代表客户执行数据库事务,这样使用者不需要考虑事务的开始和结束。    ///     /// 数据访问器对象。    public delegate void TransactionHandler(IDataAccessor Accessor);    ///     /// 定义数据库操作的事务处理委托。该委托将代表客户执行数据库事务,这样使用者不需要考虑事务的开始和结束。    ///     /// 数据访问器对象。    /// 委托参数。    public delegate void TransactionHandler2(IDataAccessor Accessor, params object[] parameters);

       在IDataAccessor接口中定义了使用这两个委托的事务委托方法TransactionExecute(托管执行),闲话不说了,我们来使用TransactionExecute改造以上代码:
代码
 
      是不是发现这种处理方式很简洁呢,本文到此为止,下文我将介绍使用IOC解藕数据库连接对象(数据访问提供者)。
          有关本例子所涉及的数据表结构请参考 一文,有关数据对象模型定义文件、文档、DDL脚本请下载: ,本文代码下载: 。
 
链接
QQ群:116773358
本文转自 agilelab 51CTO博客,原文链接:http://blog.51cto.com/agilelab/603011

转载地址:http://razvo.baihongyu.com/

你可能感兴趣的文章
html5仿小红书的图片标签功能
查看>>
匿名管道
查看>>
Java序列化与反序列化
查看>>
基础知识
查看>>
【linux+C】神器 vim + 指针相关客串
查看>>
自动释放池的原理
查看>>
快速原型工具
查看>>
native 方法列表说明
查看>>
git rm 之后的文件如何还原
查看>>
Python可视化数据------seaborn
查看>>
逻辑回归(1)
查看>>
数字图像处理的研究方法
查看>>
人生四季各有美景
查看>>
开通博客原因-心路历程
查看>>
daf简记
查看>>
typescirpt - .d.ts声明文件的用法
查看>>
Eikonal方程
查看>>
nginx+redis安装配置(内存型数据库)实现session的共享
查看>>
Ubuntu Bochs boot.asm 测试
查看>>
有了screen,妈妈再也不用担心我的学习啦
查看>>