Dapper 中使用事务

在实际的开发过程中可能会涉及到一项业务会操作多张表的情况,我们为了保持整个业务过程顺利完整的完成。有两种可能,要么全部成功,要么其中的任何一个部分失败了就要作废整个过程。这个业务需求我们会考虑到用事务,dapper是一个我个人比较喜欢优秀的orm框架,今天我就来说说dapper中怎么使用事务。

现在我的数据库中有两张表:MemberIno(会员表),LoginLog(登录日志表),当我们删除某一个会员时要求把这个会员的相关了登录日志记录也一起删除。


public static bool GetDeleteMember(int id)
{
     using (var conn = new System.Data.SqlClient.SqlConnection(ConnString))
     {
          conn.Open();
          //开户事务
          var trans=conn.BeginTransaction();
          var rows = conn.Execute("delete from MemberInfo where ID=@ID", new { ID = id }, trans);
          if (rows > 0)
          {
               rows = conn.Execute("delete from LoginLog where MemberID=@ID", new { ID = id }, trans);
               if (rows > 0)
                    trans.Commit();
               else
                    trans.Rollback();
     }
     else
           trans.Rollback();
     conn.Close();
     return rows > 0;
 }
}


说明:注意开户事务是用connection对象调用BeginTransaction,并把返回的事务变量作为conn.Execute参数传进去。其实这个需求其实不一定非要使用事务,比如可以用外键的级联删除,这里只是为了演示怎么在dapper中使用事务。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。