一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-UDA中处理事务

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

       在IDataAccessor接口中定义了使用这两个委托的事务委托方法TransactionExecute(托管执行),闲话不说了,我们来使用TransactionExecute改造以上代码:
代码
 
      是不是发现这种处理方式很简洁呢,本文到此为止,下文我将介绍使用IOC解藕数据库连接对象(数据访问提供者)。
          有关本例子所涉及的数据表结构请参考 基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文,有关数据对象模型定义文件、文档、DDL脚本请下载: http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本文代码下载: UDA.Demo3.rar
 
链接
QQ群:116773358

本文转自 agilelab 51CTO博客,原文链接:http://blog.51cto.com/agilelab/603011

相关文章
|
4月前
|
人工智能 前端开发 Devops
.NET技术在现代开发中的作用:.NET技术的核心价值、在现代应用开发中的实际应用、以及面临的挑战与未来趋势。
.NET技术是软件开发领域的核心力量,本文从其核心价值、实际应用及未来挑战三方面进行探讨。它支持多种语言,提供强大的开发工具和丰富的类库,并具备跨平台能力。在现代应用开发中,.NET广泛应用于企业级系统、Web应用、移动应用、云服务和游戏开发等领域。面对性能优化、容器化、AI集成等挑战,.NET持续创新以适应不断发展变化的技术环境。
67 4
|
IDE API 开发工具
拦截|篡改|伪造.NET类库中不限于public的类和方法
本文除了回顾拦截.NET类库中的方法,实现方法参数的篡改、方法返回结果的伪造,再着重介绍.NET类库中非public类及方法如何拦截。
拦截|篡改|伪造.NET类库中不限于public的类和方法
|
4月前
|
开发框架 .NET Linux
2款高效的.NET二维码生成类库
2款高效的.NET二维码生成类库
|
4月前
|
XML 开发框架 数据格式
.Net Core 开发框架,支持多版本的类库
.Net Core 开发框架,支持多版本的类库
87 0
|
5月前
|
人工智能 开发框架 Devops
.NET技术概览:** 本文探讨了.NET的核心特性,包括多语言支持、Common Language Runtime、丰富的类库和跨平台能力,强调其在企业级、Web、移动及游戏开发中的应用。
【7月更文挑战第4天】.NET技术概览:** 本文探讨了.NET的核心特性,包括多语言支持、Common Language Runtime、丰富的类库和跨平台能力,强调其在企业级、Web、移动及游戏开发中的应用。此外,讨论了.NET如何通过性能优化、DevOps集成、AI与ML支持以及开源策略应对未来挑战,为开发者提供强大工具,共创软件开发新篇章。
56 3
|
5月前
|
人工智能 前端开发 Devops
NET技术在现代开发中的影响力日益增强,本文聚焦其核心价值,如多语言支持、强大的Visual Studio工具、丰富的类库和跨平台能力。
【7月更文挑战第4天】**.NET技术在现代开发中的影响力日益增强,本文聚焦其核心价值,如多语言支持、强大的Visual Studio工具、丰富的类库和跨平台能力。实际应用涵盖企业系统、Web、移动和游戏开发,以及云服务。面对性能挑战、容器化、AI集成及跨平台竞争,.NET持续创新,开发者应关注技术趋势,提升技能,并参与社区,共同推进技术发展。**
43 1
|
5月前
|
开发框架 .NET API
.NET Core 和 .NET 标准类库项目类型有什么区别?
在 Visual Studio 中,可创建三种类库:.NET Framework、.NET Standard 和 .NET Core。.NET Standard 是规范,确保跨.NET实现的API一致性,适用于代码共享。.NET Framework 用于特定技术,如旧版支持。.NET Core 库允许访问更多API但限制兼容性。选择取决于兼容性和所需API:需要广泛兼容性时用.NET Standard,需要更多API时用.NET Core。.NET Standard 替代了 PCL,促进多平台共享代码。
|
7月前
|
C# 数据安全/隐私保护
一款实用的.NET Core加密解密工具类库
一款实用的.NET Core加密解密工具类库
|
存储 文字识别 C#
一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp
一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp
420 0
|
存储 安全 API
10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#)
10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#)