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

【.net core】【watercloud】数据库连接报错问题

错误信息:

中文提示 :  连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Cannot Open when State is Connecting.DbType="MySql";ConfigId="0".
English Message : Connection open error . Cannot Open when State is Connecting.DbType="MySql";ConfigId="0" at SqlSugar.Check.Exception(Boolean isException, String message, String[] args)at SqlSugar.AdoProvider.CheckConnection()at SqlSugar.AdoProvider.BeginTran()at WaterCloud.Service.AutoJob.JobExecute.<>c__DisplayClass5_0.<<Execute>b__0>d.MoveNext() in E:\WaterCloud\WaterCloud.Service\AutoJob\JobExecute.cs:line 183

导致该问题的原因是连续两次请求或插入更新时,第一操作后,在第二次操作时,第一次的句柄未完全释放,使第二次操作使用该句柄时,句柄还处于链接状态。

解决方案:使用sqlsugar中的.CopyNew()方法,在每次操作时都使用新的数据库链接

在项目文件中修改内容

文件路径:E:\项目路径\WaterCloud.Data\Repository\RepositoryBase.cs

/******************************************************************************** Copyright © 2020 WaterCloud.Framework 版权所有* Author: WaterCloud* Description: WaterCloud快速开发平台* Website:
*********************************************************************************/using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using WaterCloud.Code;namespace WaterCloud.DataBase
{/// <summary>/// 泛型仓储实现/// </summary>/// <typeparam name="TEntity"></typeparam>public class RepositoryBase<TEntity> where TEntity : class, new(){// 用于其他表操作public ITenant Tenant{get { return _tenant; }}private ITenant _tenant;private SqlSugarScopeProvider _db;public SqlSugarScopeProvider Db{get { return _db; }}/// <summary>/// 切换上下文,不传参切换到实体租户/// </summary>/// <param name="configId"></param>/// <returns></returns>public ISqlSugarClient ChangeEntityDb(object configId = null){if (!configId.IsEmpty()){_db = _tenant.GetConnectionScope(configId);}else{_db = _tenant.GetConnectionScopeWithAttr<TEntity>();}return _db;}public RepositoryBase(ISqlSugarClient scope){_tenant = scope.AsTenant();_db = Tenant.GetConnectionScopeWithAttr<TEntity>();}public async Task<TEntity> Insert(TEntity entity){return await _db.Insertable(entity).ExecuteReturnEntityAsync();}public async Task<int> Insert(List<TEntity> entitys){return await _db.CopyNew().Insertable(entitys).ExecuteCommandAsync();}public async Task<int> Update(TEntity entity){return await _db.CopyNew().Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();}public async Task<int> Update(Expression<Func<TEntity, bool>> predicate, Expression<Func<TEntity, TEntity>> content){return await _db.CopyNew().Updateable(content).Where(predicate).ExecuteCommandAsync();}public async Task<int> Delete(TEntity entity){return await _db.CopyNew().Deleteable(entity).ExecuteCommandAsync();}public async Task<int> Delete(Expression<Func<TEntity, bool>> predicate){return await _db.CopyNew().Deleteable(predicate).ExecuteCommandAsync();}public async Task<TEntity> FindEntity(object keyValue){return await IQueryable().InSingleAsync(keyValue);}public async Task<TEntity> FindEntity(Expression<Func<TEntity, bool>> predicate){return await IQueryable().FirstAsync(predicate);}public ISugarQueryable<TEntity> IQueryable(){return _db.CopyNew().Queryable<TEntity>();}public ISugarQueryable<TEntity> IQueryable(Expression<Func<TEntity, bool>> predicate){return IQueryable().Where(predicate);}public ISugarQueryable<TEntity> IQueryable(string strSql){return _db.CopyNew().SqlQueryable<TEntity>(strSql);}}
}

在对应的增删改查操作中加入.CopyNew()方法

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

相关文章:

  • 总结【过往部分项目经历一(计算机图形学方向)】
  • 基于X86/Nvidia+FPGA大模型具身智能机器人控制器解决方案,同时拥有算力与实时的便利
  • 计算机网络 - UDP协议
  • 图像预处理-添加水印
  • 端侧大模型综述On-Device Language Models: A Comprehensive Review
  • 23种设计模式-创建型模式之工厂方法模式(Java版本)
  • TCP连接建立:为什么是三次握手?
  • nohup命令使用说明
  • R4打卡——tensorflow实现火灾预测
  • 【软考-系统架构设计师】ATAM方法及效用树
  • JVM考古现场(二十二):降维打击·用二向箔优化内存模型
  • UE学习记录part18
  • rk算力集群usb做网卡
  • 数据一致性问题剖析与实践(一)——冗余数据存储分布式共识决策中的一致性问题
  • 生成树协议的构成(STP)
  • 贝叶斯均衡
  • 快速认识:数据库、数仓(数据仓库)、数据湖与数据运河
  • 2025第十七届“华中杯”大学生数学建模挑战赛题目B 题 校园共享单车的调度与维护问题完整成品正文33页(不含附录)文章思路 模型 代码 结果分享
  • 【技术派后端篇】canal实现MySQL/Redis缓存一致性
  • OpenAI 推出一对 AI 推理模型 o3 和 o4-mini
  • 【数据结构_10】二叉树(1)
  • 解析检验平板:设备还是非设备?深入了解其功能与应用(北重铸铁平台厂家)
  • 三、小白如何用Pygame制作一款跑酷类游戏(按键图片和距离的计算)
  • Android Mainline简介
  • 16位海明码解码电路设计教程
  • Web安全和渗透测试--day6--sql注入--part 1
  • ​使用APlayer前端封装音频播放
  • SPI和IIC的区别
  • 项目优化中ini配置文件解析器
  • 【深度学习】详解矩阵乘法、点积,内积,外积、哈达玛积极其应用|tensor系列02