SqlSugarScope中Hash计算有问题,导致SqlSugarClient 重复创建。 返回

SqlSugar
5 143
该叫什么 123 发布于1个月前
悬赏: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 fate sta VIP0
    1个月前

    List<ConnectionConfig> 只是作为初始化参数 ,并且没有修改他的逻辑,并且也不能修改他,如果多租户

    会使用 AddConnection 函数也不会修改初始化参数

    0 回复
  • fate sta fate sta VIP0
    1个月前

    按文档的单例用法去写,并没有修改List<ConnectionConfig>的地方

    0 回复
  • fate sta fate sta VIP0
    1个月前

    就算修改

    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 fate sta VIP0
    1个月前

    GetHashCode 只有在你new 出新的对象才会变化

    0 回复
  • 123 123 VIP0
    1个月前

    @fate sta:好的,感谢你的解答。

    0 回复