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();

 

posted @ 2022-10-23 12:21  .net&new  阅读(1236)  评论(0编辑  收藏  举报