当前位置: 首页 > news >正文

采用SqlSugarClient创建数据库实例引发的异步调用问题

  基于SqlSugar编写的多个WebApi接口,项目初始化时采用单例模式注册SqlSugarClient实例对象,前端页面采用layui布局,并在一个按钮事件中通过Ajax连续调用多个WebApi接口获取数据。实际运行时点击按钮会随机报下面几种错误:

ExecuteReader requires an open and available Connection,The connection's current state is closed
Invalid operation.The connection is closed
There is already an open DataReader associated with this connection which must be close first

  搜索上述错误信息,发现和异步调用有关。Ajax调用WebApi默认采用异步方式,同一个函数中先后用Ajax调用WebApi接口,后台都是使用同一个SqlSugarClient实例,所以才会出现上述错误。下图是DeepSeek给出的SqlSugar中SqlSugarClient和SqlSugarScope的区别,同时从参考文献1中可以看到SqlSugarClient不适合单例模式,而是适合每次请求new一个新对象,单例模式更适合使用SqlSugarScope。
在这里插入图片描述
  要解决上述问题可以采用以下三种方法:
  1)Ajax调用WebApi时增加设置async:false,取消异步调用,但多终端连接时也可能会出问题;
  2)将SqlSugarClient换为SqlSugarScope;
   3)参照SqlSugar官网文档采用原生模式使用SqlSugarClient。

  第三条没有试过,不确定是否能解决并发问题。由于没有性能上的要求,我是采用第二种方式简单粗暴的解决问题。

参考文献:
[1]https://www.donet5.com/Doc/1/1180

http://www.dtcms.com/a/182410.html

相关文章:

  • 动态规划:最长递增子序列
  • Python企业级OCR实战开发:从基础识别到智能应用
  • JMeter 中实现 双 WebSocket(双WS)连接
  • 前端EXCEL插件,智表ZCELL产品V3.0 版本发布,底层采用canvas全部重构,功能大幅扩展,性能极致提升,满足千万级单元格加载
  • openlayers利用已知的三个经纬度的坐标点 , 绘制一个贝塞尔曲线
  • JDBC执行sql过程
  • Unity.UGUI DrawCall合批笔记
  • onGAU:简化的生成式 AI UI界面,一个非常简单的 AI 图像生成器 UI 界面,使用 Dear PyGui 和 Diffusers 构建。
  • 移动零--双指针
  • 【Java ee初阶】网络原理
  • P1725 琪露诺
  • 代码随想录第41天:图论2(岛屿系列)
  • PPT图表怎么制作?说5款自己使用过的PPT图表制作工具
  • 遗传算法组卷系统实现(Java版)
  • Web 架构之容灾方案深度解析
  • ThinkPad T440P如何从U盘安装Ubuntu24.04系统
  • Cadence学习笔记之---导入PCB板框、网表
  • 贪心算法专题(Part2)
  • 简述Web和HTTP
  • 机器学习 day02
  • 【OpenCV】imread函数的简单分析
  • 计算机网络基础科普
  • 学习黑客了解Python3的“HTTPServer“
  • 社区商城分销合作合规承诺书
  • MacOS 用brew 安装、配置、启动Redis
  • Jsp技术入门指南【十二】自定义标签
  • Laravel 安全:批量赋值 fillable 与 guarded
  • leetcode-hot-100(哈希)
  • 操作系统学习笔记第2章 (竟成)
  • RENAME 语句与RENAME选项学习