首页 > 数据库 >sqlsugar 事务执行

sqlsugar 事务执行

时间:2022-10-23 12:34:22浏览次数:46  
标签:事务 SqlSugarClient db BeginTran Ado new 执行 sqlsugar

1、单库事务

单库事务是针一个db操作执行的事务,无论是 ISqlSugarClient和  SqlSugarClient 用法都一样

    try     {         db.Ado.BeginTran();         db.Insertable(new Order() { .....}).ExecuteCommand();         db.Ado.CommitTran();     }     catch (Exception ex)     {         db.Ado.RollbackTran();         throw ex;     }

如果一个db就一个库,那么你也可以用多租户事务节约代码,因为2者在一个库的情况下作用一样

db.BeginTran();//去掉了.ado db.CommitTran();//去掉了.ado db.RollbackTran();//去掉了.ado //ISqlSugarClient 接口使用多租户事务 看文档2.2

2、多库事务(可跨库)

多数据库事务是SqlSugar独有的功能,稳定比CAP更强(CAP还有一层队列),在单个程序中可以很愉快的使用多库事务

SqlSugarClient或者SqlSugarSope 继承于2个接口 ,代码如下事物

SqlSugarClient : ISqlSugarClient, ITenant

多租户声明

SqlSugarClient db = new SqlSugarClient(new List<ConnectionConfig>(){ new ConnectionConfig(){ ConfigId="0", DbType=DbType.SqlServer,ConnectionString=..,IsAutoCloseConnection=true}, new ConnectionConfig(){ ConfigId="1", DbType=DbType.MySql,ConnectionString=..,IsAutoCloseConnection=true} });

简单的说多租户事务和单库事务用法基本100%一致,唯一区别就是少了.Ado

 db.Ado.BeginTran//单库  db.BeginTran //多库      

2.1 SqlSugarClient事务

  因为继承  ITenant 了可以直接使用   (老版本var mysql=db.GetConnection要写在事务外面)

 //禁止使用 db.Ado.BeginTran,多租户是db.BeginTran  try  {      db.BeginTran();             db.GetConnection("1").Insertable(new Order() { }).ExecuteCommand();      db.GetConnection("0").Insertable(new Order() { }).ExecuteCommand();             db.CommitTran();  }  catch (Exception)  {      db.RollbackTran();//数据回滚      throw;  }

2.2 ISqlSugarClient事务

因为和ITenant没有继承关需要转换一下 

db.AsTenant().BeginTran();//低版本 (db as ITenant).BeginTran()  db.AsTenant().CommitTran(); db.AsTenant().RollbackTran();

 

标签:事务,SqlSugarClient,db,BeginTran,Ado,new,执行,sqlsugar
From: https://www.cnblogs.com/wugh8726254/p/16818336.html

相关文章

  • sqlsugar 联表查询
    第一种:5个表以内var query5 = db.Queryable<Order>()            .LeftJoin<Custom>   ((o, cus ) => o.CustomId == cus.Id)//多个条件用&& ......
  • JDBCTemplate-执行DML语句和执行DQL语句
    JDBCTemplate-执行DML语句需求:定义成员变量 //1、获取JDBCTemplate对象privateJdbcTemplatetemplate=newJdbcTemplate(JDBCUtils.getDataSource());......
  • Laravel记录执行的SQL到日志(开发环境和生产环境都用得上)
    //在app/Providers/AppServiceProvider.php的boot方法中写入DB::listen(function($query){Log::channel('db')->info($query->sql,$query->bindings);});//为......
  • mysql(分页表,日期.表连接,事务,索引,视图,备份)
    1.分页:limirm,n(一般放最后,其次在排序)m:表示从第几条数据开始显示(0表示第一天数据)n:表示每页显示的数据条数公式m=(pageNo-1)*pangeSizepageNo:表示显示的第......
  • 通过vbs语法不弹窗执行脚本
    vbs简介VBS是基于VisualBasic的脚本语言,简称VB。VBS的全称是:MicrosoftVisualBasicScriptEdition。vbs语法REM注释REM参数args1=WScript.Arguments.Item(0)a......
  • 9、写传播和事务串行化的具体实现
    1、总线嗅探写传播的原则就是当某个CPU核心更新了Cache中的数据,要把该事件广播通知到其他核心。最常见实现的方式是总线嗅探(BusSnooping)。我还是以前面的i变量例子来......
  • Linux执行jsp命令的时候报错:-bash: jps: command not found
    前言:在zookeeper学习的时候,执行jsp命令查看zookpper运行状态的时候发现报错:-bash:jps:commandnotfound翻阅了一大批文章,不是东拼西凑,就是缺斤少两,于是乎,本人萌生了......
  • MYSQL数据库的事务的四大特性
    事务的特性原子性(Atomicity)事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全部不执行一致性(Consistent)在事务开始和完成时,数据都必须保持一致状态。这意味着所有......
  • Hive创建事务表
    在Hive0.14版本后,ORC文件能够确保Hive在工作时的ACID性质被正确地得到使用,使得对数据进行更新操作成为可能,但Hive的事务仍被设计成每个事务适用于更新大批量的数据,而不建......
  • This:从执行上下文的角度来理解这个
    This:从执行上下文的角度来理解这个。这在全局执行上下文中让我们首先看看这在全局执行上下文中是什么。可以在控制台输入console.log(this)在全局执行上下文中打印出这......