SqlSugarScope中Hash计算有问题,导致SqlSugarClient 重复创建。 返回
SqlSugar
老数据
5
1614
悬赏:5 飞吻
private SqlSugarClient GetContext()
{
SqlSugarClient result = null;
var key = _configs.GetHashCode().ToString();
StackTrace st = new StackTrace(true);
var methods = st.GetFrames();
var isAsync = UtilMethods.IsAnyAsyncMethod(methods);
if (isAsync)
{
result = GetAsyncContext(key);
}
else
{
result = GetThreadContext(key);
}
return result;
}命名空间SqlSugar,类SqlSugarScope ,上述处方法中,key的计算通过使用 List<ConnectionConfig> 进行 HashCode计算,但是 上述list中变量改变会导致重新计算hash不一致。重复创建 SqlSugarClient ?
热忱回答(5)
-
fate sta VIP0
2021/10/15List<ConnectionConfig> 只是作为初始化参数 ,并且没有修改他的逻辑,并且也不能修改他,如果多租户
会使用 AddConnection 函数也不会修改初始化参数
0 回复 -
fate sta VIP0
2021/10/15按文档的单例用法去写,并没有修改List<ConnectionConfig>的地方
0 回复 -
fate sta VIP0
2021/10/15就算修改
List<DataDictionary> datas = new List<DataDictionary>(); var code = datas.GetHashCode(); datas.Add(new DataDictionary() { Code="1", Name="男",Type="sex" }); datas.Add(new DataDictionary() { Code = "2", Name = "女", Type = "sex" }); datas.Add(new DataDictionary() { Code = "1", Name = "南通市", Type = "city" }); datas.Add(new DataDictionary() { Code = "2", Name = "苏州市", Type = "city" }); datas.Add(new DataDictionary() { Code = "1", Name = "江苏省", Type = "province" }); datas.Add(new DataDictionary() { Code = "2", Name = "湖南省", Type = "province" }); code = datas.GetHashCode();GetHashCode 也是唯一的
0 回复 -
fate sta VIP0
2021/10/15GetHashCode 只有在你new 出新的对象才会变化
0 回复 -
123 VIP0
2021/10/15@fate sta:好的,感谢你的解答。
0 回复