有两个方法,不分前后的执行(几乎同时),都和数据库操作有关,这是方法中用到的一个工具类方法:
public static IEnumerable<T> Query<T>(string sql, object param = null, IDbTransaction tran = null)
{
Open();
var list = DB.Query<T>(sql, param, tran);
Close(tran);
return list;
}
导致两个方法执行的时候,前一个有可能会把后一个方法的连接关闭(第一个方法执行成功了,第二个方法也用到这个方法,把第二个连接给关闭了,导致报错)
前一个有可能会把后一个方法的连接关闭
你是用了单例了吗
是的
@信海哥: 用单例肯定会有这样的冲突啊,两个(多个)线程同时修改一个对象的属性(比如open状态,commandText等)。
改用transit 或者 scope注入DBContext(如果使用了依赖注入)
@luzemin: 用的Dapper 改用transit (这个是什么啊)
@信海哥: 我说的是选择适合的依赖注入时候的生命周期
transit 是手误,transit -->Transient
https://docs.microsoft.com/en-us/dotnet/core/extensions/dependency-injection#service-lifetimes
@luzemin: 我用的工具类的形式(静态类),没用注入的方式
@信海哥: 那就改为每次new DB context
@luzemin: 好的大哥,谢谢大哥(抱拳)
@luzemin: 前端数据 {name:"",age:20,data:[] } 后端 用JObject
报错 Unable to cast object of type 'Newtonsoft.Json.Linq.JObject' to type 'Newtonsoft.Json.Linq.JArray'.
这个是什么问题