发现一个疑似BUG的用法-存储过程+DataReader 返回

SqlSugar 老数据
1 2522
该叫什么 zxbe 发布于2018/9/13
悬赏:5 飞吻

            var result = _db.Ado.UseStoredProcedure(() =>
            {
                string spName = "Get对AA";
                return _db.Ado.GetDataReader(spName, new { AAName });
            });
            var dataReader = result;

            var opp = _db.Ado.DataReaderParameters.Count;  // 不为0!!没有把@AAName 清掉!!!


源代码:

        public T UseStoredProcedure<T>(Func<T> action)
        {
            ...
            this.IsClearParameters = false;   // 设置为false
            if (action != null)
            {
                result = action();
            }
            this.CommandType = oldCommandType;
            this.IsClearParameters = true;
            return result;
        }


        public virtual IDataReader GetDataReader(string sql, params SugarParameter[] parameters)
        {
            try
            {
                ...
                if (isSp)
                    DataReaderParameters = sqlCommand.Parameters;
                if (this.IsClearParameters)    // 被设置为false了
                    sqlCommand.Parameters.Clear();
                ...
        }

热忱回答(1)