前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >The transaction associated with this command is not the connection‘s active

The transaction associated with this command is not the connection‘s active

作者头像
GoodTime
发布2024-03-05 16:11:35
970
发布2024-03-05 16:11:35
举报

1、出现问题原因

接口接收入参为数组类型,遍历数组操作时,事务写在了循环里,待下一次循环时事务非此连接的事务导致出现如题错误,接口传参数组形式如下:

代码语言:javascript
复制
[
    {
        "id": 1,
        "infos": [
            {
                "id": "1",
                "name": "小华",
                "age": "18"
            }
        ]
    },
    {
        "id": 2,
        "infos": []
    }
]

2、解决办法

将循环中需要更新的数据放入到列表中,在循环外用事务执行批量更新,以此使事务处于连接的活动事务中即可。部分示例代码如下:

代码语言:javascript
复制
// ...处理循环信息
var trans = _people.BeginTransaction();
try
{
    // 更新人员信息
    var updatePeople = _people.UpdateRange(updatePeopleInfoList);
    if(updatePeopleInfoList.Count == 0) updatePeople = true;
    // 更新人员附属信息
    var updatePeopleItem = _peopleItem.UpdateRange(updatePeopleItemList);
    if(updatePeopleItemList.Count == 0) updatePeopleItem = true;
    if(updatePeople && updatePeopleItem)
    {
        trans.Commit();
        _logger.LogDebug($ "[更新人员信息成功]", "111111");
    }
    else
    {
        trans.Rollback();
        _logger.LogError($ "[更新人员信息失败]{args.ToJson()}");
        return ErrorResult < long > ($ "更新人员信息失败", "111112");
    }
}
catch(Exception ex)
{
    trans.Rollback();
    _logger.LogError($ "[更新人员信息失败]{ex}", ex.Message);
    return ErrorResult < long > ("系统繁忙,请重新获取", "111150");
}

?——————————————————————————————————————————

2023-4-18 更新

上述代码采用IDbTransaction事务,可能是IDbTransaction封装有问题导致,重新排查代码,选择直接用自己封装的事务工具类,核心代码如下,自封装工具代码仓库代码量多不在此贴出来,如有需要欢迎评论区或者私信交流。

代码语言:javascript
复制
 _people.BeginTransaction();
 try
 {
     var insertPeople = _people.Insert(peopleInfo);
     if(insertPeople)
     {
         _people.CommitTransaction();
     }
     else
     {
         _people.RollBackTransaction();
     }
 }
 catch(Exception ex)
 {
     _people.RollBackTransaction();
 }
若本文有帮助到阅读本文的同学,欢迎点赞、关注、收藏,互相学习交流。
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、出现问题原因
  • 2、解决办法
    • 若本文有帮助到阅读本文的同学,欢迎点赞、关注、收藏,互相学习交流。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com