单库事务是针一个db操作执行的事务,无论是 ISqlSugarClient和 SqlSugarClient 用法都一样
如果一个db就一个库,那么你也可以用多租户事务节约代码,因为2者在一个库的情况下作用一样
多数据库事务是SqlSugar独有的功能,稳定比CAP更强(CAP还有一层队列),在单个程序中可以很愉快的使用多库事务
SqlSugarClient或者SqlSugarSope 继承于2个接口 ,代码如下事物
多租户声明
简单的说多租户事务和单库事务用法基本100%一致,唯一区别就是少了.Ado
因为继承 ITenant 了可以直接使用 (老版本var mysql=db.GetConnection要写在事务外面)
因为和ITenant没有继承关需要转换一下
db.ContextId要从事务开始,CURD 和事务结束 必须一致 这个事务才会生效,如果是MYSQL也检查一下表引擎是否支持事务
不一致怎么办?

测试代码 最好用 Insert ,因为Update有条件过滤等因素添会添加测试难度,我们用插入来进行测试会比较简单些
输出结果 插入前和回滚后一样就说明成功的

这种适合有全局异常的,直接出错扔出错并且回滚
UnitOfWork: https://www.donet5.com/Home/Doc?typeId=2360
SqlSugarScope 单例模式支持跨事务方法
SqlSugarClient 需要IOC 设置 Scoped周期实现
CAP可以支持跨程序间的事务处理(非跨程序事务不建议用,涉及到队列等,在单程序中稳定性肯定不如自带的多租户事务)
注意: MySql用户使用 升级到最新
1、数据库的自动释放要关闭
2、手动打开数据库连接 db.Ado.Connection.Open();
3、用db.Ado.Connection创建事务
4、把你的事务赋值到ORM对象 db.Ado.Transaction = 你的事务;
5、执行你的代码
6、关闭Connection对象
https://github.com/DotNetNext/SqlSugar/issues/1207
备份地址
https://www.donet5.com/Ask/9/23459
请不要在同步方法里面写下面方代码,必须是异步方法才行 返回是要带有Task async
用法1:
用法2:
单库模式用法
多租户模式
有外部事务,内部事务用外部事务(推荐)
通过工作单元实现嵌套事务 5.1.2.5-preview03
不推荐原因:这种很容易出现坑,比如业务A和业务B都用到了一样的表就会死锁
事务嵌套:推荐用9.1或者标题10 ,9.2是不推荐的
详细用法: https://www.donet5.com/Doc/27/2537
(1)MYSQL不支持创建表和删除表处理事务,原生事务也一样
(2) MyISAM 存储引擎不支持事务 需要改成 InnoDB

版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/13092.html