学习并测试SqlSugar的单库事务功能

  SqlSugar支持单库事务、多租户事务、多库事务,本文学习并测试单库事务的基本用法。
  使用SqlSugarClient类、ISqlSugarClient接口都可以创建SqlSugarClient数据库操作实例,其区别在于,针对单库而言,SqlSugarClient类支持调用BeginTran\CommitTran\RollbackTran、Ado. BeginTran\Ado.CommitTran\Ado.RollbackTran等两种方式处理事务,而ISqlSugarClient接口仅支持Ado.BeginTran\Ado.CommitTran\Ado.RollbackTran方式实现事务。
  针对低版本的SqlSugar,也可以调用ISqlSugarClient或SqlSugarClient的AsTenant().BeginTran\ AsTenant().CommitTran\AsTenant().RollbackTran处理事务。

  下面的测试代码,数据表中有四条数据,需要在一个事务中清空表格内容后再插入新数据。
在这里插入图片描述
  下面是正常执行的代码及数据库操作结果:

List<AppUsers> lstUsers=new List<AppUsers>();

AppUsers appUsers = new AppUsers();
appUsers.UserName = "tom";
appUsers.Password = "321";
lstUsers.Add(appUsers);

appUsers = new AppUsers();
appUsers.UserName = "jack";
appUsers.Password = "123";
lstUsers.Add(appUsers);

appUsers = new AppUsers();
appUsers.UserName = "lucy";
appUsers.Password = "123";
lstUsers.Add(appUsers);

try
{
    db.BeginTran();
    db.Deleteable<AppUsers>().ExecuteCommand();
    db.Insertable<AppUsers>(lstUsers).ExecuteCommand();
    db.CommitTran();
}
catch (Exception ex)
{
    db.RollbackTran();
    Console.WriteLine(ex.Message );
}

在这里插入图片描述

  如果将插入的数据的名称相同(UserName是主键),则插入数据会报错,同时也触发了回滚操作,之前的数据未被清空。代码及数据库结果如下所示:

List<AppUsers> lstUsers=new List<AppUsers>();

AppUsers appUsers = new AppUsers();
appUsers.UserName = "大娃";
appUsers.Password = "321";
lstUsers.Add(appUsers);

appUsers = new AppUsers();
appUsers.UserName = "大娃";
appUsers.Password = "123";
lstUsers.Add(appUsers);

try
{
    db.BeginTran();
    db.Deleteable<AppUsers>().ExecuteCommand();
    db.Insertable<AppUsers>(lstUsers).ExecuteCommand();
    db.CommitTran();
}
catch (Exception ex)
{
    db.RollbackTran();
    Console.WriteLine(ex.Message );
}

在这里插入图片描述
在这里插入图片描述

  将插入的数据改正确,再运行程序即可正常清空并插入数据。
在这里插入图片描述

  上述代码使用BeginTran\CommitTran\RollbackTran操作事务,测试过程中也使用了其它两种方式,效果相同。

参考文献:
[1]https://www.donet5.com/home/Doc?typeId=1183

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值