首页 > 其他分享 >DAPPER 事务 TRANSACTION

DAPPER 事务 TRANSACTION

时间:2024-05-03 16:34:32浏览次数:23  
标签:事务 TRANSACTION using c2 var new DAPPER c1 conn

https://www.cnblogs.com/friend/p/16754184.html\

 

public async Task<int> Save(long moldProducedProductId, List<MoldStandardResource> list)
 {
   int result = 0;
   string delSql = "Delete MoldStandardResource Where MoldProducedProductId=@moldProducedProductId";
   string InsertSql = "INSERT INTO [dbo].[MoldStandardResource] ([Id],[MoldProducedProductId],[ProjectCategoryId],[CustomValue],[Description],[UserId],[UpdateDate])VALUES(@Id,@MoldProducedProductId,@ProjectCategoryId,@CustomValue,@Description,@UserId,@UpdateDate)";
   using var conn = _dapperContext.CreateConnection();
   conn.Open();
   using (var transaction = conn.BeginTransaction())
   {
     try
     {
       result = await conn.ExecuteAsync(delSql, new { moldProducedProductId }, transaction);
 
       foreach (var detail in list)
       {
         await conn.ExecuteAsync(InsertSql, detail, transaction);
       }
       transaction.Commit();
     }
     catch
     {
       transaction.Rollback();
       throw;
     }
     finally
     {
       conn?.Close();
     }
   }
   return result;
 }

  

Dapper - Transaction​
交易是如此的重要,Dapper當然也不會忘記。

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 //Transaction using (SqlConnection conn = new SqlConnection(strConnection)) {     string strSql = " UPDATE Users SET col1=@c1 WHERE col2=@c2" ;     dynamic datas = new []{ new { c1 = "A", c2 = "A2" }                 new { c1 = "B", c2 = "B2" }                 new { c1 = "C", c2 = "C2" }};     //交易     using(var tran = conn.BeginTransaction())     {         conn.Execute( strSql, datas);         tran.Commit();     } }

  單一資料庫時建議使用(效能較好)。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //TransactionScope //加入參考 using System.Transactions;   //交易 using(var tranScope = new TransactionScope()) {     using (SqlConnection conn = new SqlConnection(strConnection))     {         string strSql = " UPDATE Users SET col1=@c1 WHERE col2=@c2" ;         dynamic datas = new []{ new { c1 = "A", c2 = "A2" }                     new { c1 = "B", c2 = "B2" }                     new { c1 = "C", c2 = "C2" }};         conn.Execute( strSql, datas);     }     tranScope.Complete(); }

  用於異質資料庫交易。

参考:https://dotblogs.com.tw/OldNick/2018/01/15/Dapper#Dapper%20-%20Transaction

标签:事务,TRANSACTION,using,c2,var,new,DAPPER,c1,conn
From: https://www.cnblogs.com/wonder223/p/18171325

相关文章

  • mysql 事务日志
    事务日志简介事务有四种特性:原子性、一致性、隔离性、持久性,详情请看《mysql事务的基础知识》。其中隔离性由锁机制实现,原子性、一致性由undo日志(undolog称为回滚日志,回滚记录到某个特定版本)来保证,持久性则是由redo日志(redolog称为重做日志,提供写操作,恢复提交事务修......
  • SAP 事务代码CU71报错 - 特性LOBM_LWEDT不存在 -
    SAP事务代码CU71报错-特性LOBM_LWEDT不存在 -  1,在事务代码CU71或者如下配置里。    定义排序规则,   试图使用SAP标准特性LOBM_LWEDT, SAP报错说:’特性LOBM_LWEDT不存在’。这是SAP系统上的一个标准的特性,怎么能不存在SAP系统上呢?  2,解决方法:......
  • 微服务:分布式事务
    在分布式系统中,一个服务调用多个远程服务时,多个事务必须同时成功或失败。每一个服务的事务称为分支事务,整个业务称为全局事务 seata架构中有三个角色:TC事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚TM事务管理者:定义全局事务的范围、开始,提交,回滚全局事务RM资......
  • simpread-课程 24:工作单元之数据库事务【AOP】
    一、工作单元事务代码分析在上一个课程,我们已经实现了数据库事务功能,来保证数据的完整性。通过上一个课程的实现方式,我们在每一个Action开头和结尾,都需要添加对应的代码,才能实现事务功能,具体见以下截图:这种实现方式存在以下2个问题:在具体业务开发中,一个请求往往都会涉......
  • 分布式事务的应用场景
    分布式事务在多个场景中都有应用,主要包括:支付系统。在支付过程中,需要从买家的账户扣款并向卖家的账户转账。由于买家和卖家的账户可能位于不同的数据库中,这时候就需要使用分布式事务来确保这两个操作要么同时成功,要么同时失败。电子商务平台。在电商平台中,下单购......
  • Mysql事务原理与优化最佳实践
    学习来源-图灵课堂https://vip.tulingxueyuan.cn说到MySQL的innodb的一大特性,就不得不说到事务。今天就学习事务。事务事务的定义:逻辑上的一组操作,要么一起成功,要么一起失败,中间绝对不会存在别的状态。逻辑上的一组操作,就是说这些操作都是有逻辑关系的。我们通常说的事务是针......
  • openGauss 事务
    事务事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。openGauss数据库支持的事务控制命令有启动、设置、提交、回滚事务。openGauss数据库支持的事务隔离级别有读已提交和可重复读。READCOMMITTED:读已提交隔离级别,事务只能读到已提......
  • Go+seata实现分布式事务-tcc
    上篇用的ta跟xa。这次试试tccclientpackagemainimport( "context" "flag" "fmt" "net/http" "time" "github.com/parnurzeal/gorequest" "github.com/seata/seata-go/pkg/client" "github.......
  • Go+seata实现分布式事务
    docker安装seataversion:'3'services:seata-server:image:seataio/seata-server:latestports:-"8091:8091"-"7091:7091"environment:-SEATA_PORT=8091-STORE_MODE=filemysql:ima......
  • 分布式事务之dtm
    github: https://github.com/dtm-labs/dtm 本人使用场景,目前微服务中存在的用户服务,商品服务,订单服务,支付服务,在进行下单操作的时候,需要创建订单并扣减库存,这个时候就需要保证事务的一致性,但是对于目前的微服务架构来说就需要一套分布式的事务来实现,于是引入DT......