sql server dapper中的事务处理

项目中有这样一种情况,分了几个页面的参数设置,他们对应了数据库中的几张表。

当界面中修改了这些参数的时候,对应的数据库中的数据也需要更新。

不过有个需求就是,更新的时候,需要这几张表作为一个整体一起更新,实际码代码的时候,碰到这样的Bug,就是第一张表的数据更新成功了,但是其余几张表都失败了。这种情况下,我得到的数据库更新就特别恶心。我不需要这样的更新,我宁愿几张表都更新失败。

所以就用上了sql里面的事务处理。

using (IDbConnection connection = new SqlConnection(mConnectionString))
            {
                //在不使用事务的时候,比如增删改查,dapper会自动为我们打开连接
                //事务的时候,需要自己手动打开
                connection.Open();
                IDbTransaction transaction = connection.BeginTransaction();
                try
                {
                    //1.向数据库中的GlobalSetting表中插入一条数据
                    InsertGlobalSetting(connection,transaction, newStationType, globalSetting);
                    //2.向数据库中的MockLevel表中插入多条数据
                    InsertMockLevel(connection, transaction, newStationType, mockLevels);
                    //3.向数据库中的StoreySetting表中插入多条数据
                    InsertStoreySetting(connection, transaction, newStationType, storeyViewModels);
                    //4.向数据库中的MockRoom表中插入多条数据
                    InsertMockRoom(connection, transaction, newStationType, storeyViewModels);
                    transaction.Commit();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }

需要注意的是,在使用事务的时候,

1.手动打开连接;

2.事务中的query和execute都需要加入IDbTransaction类型的参数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值