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