RDIFramework.NET 框架兼容各种数据库类型事务使用范例参考

简介:

RDIFramework.NET 框架兼容各种数据库类型事务使用范例参考

 

  RDIFramwork.NET框架对数据库的事务做了很好的控制,对多表或多条语句需要在同一事务执行提供了很好的支持,同时支持任意主流类型的数据库,下面的代码可以给用户做为参考。用户可以任意扩展使用。


1、传入实体执行执行事务测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private  bool  InEntityTransactionTest( string  mainId, string  detailId)
{    
     //可以支持任意流行数据库类型,指定相关的数据库提供者即可(OracleProvider、SqlProvider、SqLiteProvider、MySqlProvider、DB2Provider、OleDbProvider)
     IDbProvider dbProvider =  new  OracleProvider(SystemInfo.BusinessDbConnectionString);       bool  result =  true ;    
     try
     {
         dbProvider.BeginTransaction();        
         //主表
         CASE_PRODUCTIN_MAINManager manager =  new  CASE_PRODUCTIN_MAINManager(dbProvider, Utils.UserInfo);
         CASE_PRODUCTIN_MAINEntity mainEntity = manager.GetEntity(dbProvider.SqlSafe(mainId));
         manager.Delete(mainEntity);       
         //子表
         CASE_PRODUCTIN_DETAILManager detailManager =  new  CASE_PRODUCTIN_DETAILManager(dbProvider, Utils.UserInfo);
         CASE_PRODUCTIN_DETAILEntity detailEntity = detailManager.GetEntity(dbProvider.SqlSafe(detailId));
         detailManager.Delete(detailEntity);       
         //事务提交        
          dbProvider.CommitTransaction();
     }    
     catch  (Exception ex)
     {        
         //事务回滚        
         dbProvider.RollbackTransaction();
         result =  false ;
     }    
     return  result;
}

2、传入Sql语句事务测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private  bool  InSqlTransactionTest( string  mainId,  string  detailId)
{
     //可以支持任意流行数据库类型,指定相关的数据库提供者即可(OracleProvider、SqlProvider、SqLiteProvider、MySqlProvider、DB2Provider、OleDbProvider)
 
     IDbProvider dbProvider =  new  SqlProvider(SystemInfo.BusinessDbConnectionString);
     bool  result =  true ;
     try
     {
         dbProvider.BeginTransaction();
         //主表
         string  sqlMain =  string .Format( "DELETE FROM CASE_PRODUCTIN_MAIN WHERE ID = {0}" , mainId);
         dbProvider.ExecuteNonQuery(sqlMain);
         //子表
         string  sqlDetail =  string .Format( "DELETE FROM CASE_PRODUCTIN_DETAIL WHERE ID = {0}" , detailId);
         dbProvider.ExecuteNonQuery(sqlMain);
         //事务提交 
         dbProvider.CommitTransaction();
     }
     catch  (Exception ex)
     {
         //事务回滚
         dbProvider.RollbackTransaction();
         result =  false ;
     }
     return  result;
}
本文转自yonghu86 51CTO博客,原文链接:http://blog.51cto.com/yonghu/1600509,如需转载请自行联系原作者
相关文章
|
11月前
|
人工智能 数据挖掘 API
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
1022 21
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
|
11月前
|
Java 数据库 Docker
基于neo4j数据库和dify大模型框架的rag模型搭建
基于neo4j数据库和dify大模型框架的rag模型搭建
3201 35
|
10月前
|
中间件 关系型数据库 Go
Go语言数据库编程:数据迁移与事务控制
本文介绍了《Go语言实战指南》中关于数据库编程的核心内容,涵盖使用 GORM 进行数据迁移与事务控制。主要内容包括:AutoMigrate 方法自动创建或更新表结构;事务控制的自动与手动实现方式;事务隔离级别的设置;以及在 Gin 框架中统一管理事务的实践建议。适合开发阶段的数据库结构管理和事务性操作需求。
|
9月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
684 0
|
12月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
759 14
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
2040 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
713 23
|
消息中间件 开发框架 监控
NET任务调度框架Hangfire使用指南
Hangfire 是一个用于 .NET 应用程序的开源任务调度框架,支持长时间运行任务、定时任务等。通过简单的安装配置,即可将任务从主线程分离,提升应用性能。支持多种数据库,提供丰富的任务类型如立即执行、延迟执行和周期性任务,并有可视化管理界面 Hangfire Dashboard。还支持安全性配置及扩展插件,如 Hangfire.HttpJob,适合各种复杂场景下的任务调度需求。
1541 1
NET任务调度框架Hangfire使用指南
|
Oracle 关系型数据库 Java
|
SQL 数据库 索引
【YashanDB数据库】大事务回滚导致其他操作无法执行,报错YAS-02016 no free undo blocks
大事务回滚导致其他操作无法执行,报错YAS-02016 no free undo blocks