当前位置: 首页 > 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()方法

相关文章:

  • 总结【过往部分项目经历一(计算机图形学方向)】
  • 基于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
  • 4月深圳新房、二手房成交同比均上涨,“5月有望延续积极向好的发展态势”
  • 观察|印巴交火开始升级,是否会演变为第四次印巴战争?
  • “半世纪来对无争议边界最深入袭击”:印巴冲突何以至此又如何收场?
  • 第四轮伊美核问题谈判预计5月11日举行
  • “高校领域突出问题系统整治”已启动,聚焦招生、基建、师德等重点
  • 戴紫薇评《不像说母语者》丨后殖民语境下的母语追寻