多线程时,Invalid operation. The connection is closed 返回

采用“SqlSugar.IOC”方式。
多线程情况下必然会出现以下错误。
System.InvalidOperationException:“Invalid operation. The connection is closed.”
配置方式:
调用出现问题后,写的一个测试例子
看了官方的相关文档与资料,没有找到问题所在。
环境:
1、net6.0
2、SqlSugarCore:5.1.3.1
热忱回答(9)
-
fate sta VIP0
2022/9/21db.CopeyNew().Queryable<t>().ToListAsync
Task.WhenAll要加上这个
0 回复 -
fate sta VIP0
2022/9/210 回复 -
或丶许 VIP0
2022/9/21用Task.WhenAll,仅仅是模拟了一个多线程的情况,我的实际业务并不是这样的写的。现在实际业务上加上了:CopyNew,确实没有出现这个异常了,难道涉及到多线程的都需要这样去写?。这样写有什么副作用没得?https://www.donet5.com/Home/Doc?typeId=2349 这个文档中提到“CopyNew”是针对mysql与PGSQL。SQL server没有提到这个。
0 回复 -
fate sta VIP0
2022/9/21@或丶许: Task.WhenAll SqlSugarScope没有办法去new 新实例所以需要特别写
0 回复 -
fate sta VIP0
2022/9/21其他的SqlSugarScope都可以自已维护线程安全
0 回复 -
fate sta VIP0
2022/9/21只有TaskWhenAll需要,多线程不需要
0 回复 -
或丶许 VIP0
2022/9/21我的业务是在Quartz.Net中的job中使用的,难道是因为Quartz.Net,是用的: Task.WhenAll的原因?
0 回复 -
fate sta VIP0
2022/9/21@或丶许:有可能的
0 回复 -
fate sta VIP0
2022/9/21SqlSugarScope原理是AsyncLocal ,如果AsyncLcaol认为是同一个异步上下文就没办法去内部new sqlsugarclient,
还有一种可能是异步用法错引起的 文档入门篇都有写
0 回复