原生模式提示:MySqlConnection 已经被使用,改成单例又报超时!!!!!! 返回
单例模式执行存储过程,换了N中方法了死活不行,单库
报错 The Command Timeout expired before the operation completed
public static void SqlSugarInit(this WebApplicationBuilder builder)
{
string ConnStr = "ConnectionStrings";
var ConnectionStrings =;
string _dbType = ;
string _isEncrypt = ;
string _connectionString = ;
var dbType = DbType.MySql;
if (_dbType.Equals("SqlServer"))
dbType = DbType.SqlServer;
if (_isEncrypt.ToLower().Equals("true"))
_connectionString = _connectionString.DesDecrypt();
ICacheService myCache = new HttpRuntimeCache();
builder.Services.AddSingleton<ISqlSugarClient>(s =>
{
SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
{
ConfigId = "0",
DbType = dbType,
ConnectionString = _connectionString,
IsAutoCloseConnection = true,
ConfigureExternalServices = new ConfigureExternalServices() { DataInfoCacheService = myCache }
},
db =>
{
db.Ado.CommandTimeOut = 30;
#if DEBUG
db.Aop.OnLogExecuting = (sql, pars) =>
{
//获取原生SQL推荐 性能OK
var SqlStr = UtilMethods.GetNativeSql(sql, pars);
//获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用
//Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))
};
#endif
});
return sqlSugar;
});
}
存储过程块:
var lastStr = StrUtils.RandomStr(Len: 4, Type: 2) + "-del";
var _db = db as SqlSugarScope; // 这里改成 var _db=db.CopyNew() 也是报超时
var result = _db.UseTran(() =>
{
var row = _db.Updateable<SiteEntity>().SetColumns(it => new SiteEntity
{
Domain = it.Domain + $"_{lastStr}",
IsDel = true
}).Where(it => it.ID == ID).ExecuteCommand();
if (row <= 0)
throw new Exception("修改失败").WriteLog();
if (row > 0)
{
_ = _db.Deleteable<SiteLinkEntity>().Where(it => it.SID == ID).ExecuteCommand();
_ = _db.Deleteable<SiteUpdateEntity>().Where(it => it.SID == ID && it.State == (int)SiteUpdateStates.待审核).ExecuteCommand();
}
});
if (!result.IsSuccess)
_db.RollbackTran();
return result.IsSuccess;
然后又改成下边这种方式:
var lastStr = StrUtils.RandomStr(Len: 4, Type: 2) + "-del";
try
{
db.Ado.BeginTran(); //这里 var _db=db.CopyNew() 、 db.BeginTran(); 都尝试过了,死活超时!!!!
var row = db.Updateable<SiteEntity>().SetColumns(it => new SiteEntity
{
Domain = it.Domain + $"_{lastStr}",
IsDel = true
}).Where(it => it.ID == ID).ExecuteCommand();
if (row <= 0)
throw new Exception("修改失败").WriteLog();
if (row > 0)
{
db.Deleteable<SiteLinkEntity>().Where(it => it.SID == ID).ExecuteCommand();
db.Deleteable<SiteUpdateEntity>().Where(it => it.SID == ID && it.State == (int)SiteUpdateStates.待审核).ExecuteCommand();
}
db.Ado.CommitTran();
return true;
}
catch (Exception ex)
{
db.Ado.RollbackTran();
}
return false;
热忱回答(4)
-
Mr.An VIP0
2025/8/27切换为 MySqlConnector 2.1.0 也是同样的问题!
0 回复 -
Mr.An VIP0
2025/8/27以前好几个项目用着都没问题,这个新项目使用的是net8.0,是哪里配置有问题吗?
0 回复 -
fate sta VIP0
2025/8/27SQL 语句本身执行很慢
表没有索引 / 索引失效
join 过多、子查询复杂
where 条件没有利用索引
大量数据需要扫描
数据库压力大
并发太高
锁等待、事务未提交
0 回复 -
Mr.An VIP0
2025/8/27@fate sta:小姐姐,搞定了!!! 妈耶! 是因为前期使用错了方法,导致数据库一直死锁!!! 重启数据库好了!!!!











谢谢小姐姐










0 回复