예제 #1
0
 // Token: 0x06000034 RID: 52 RVA: 0x00002C88 File Offset: 0x00000E88
 public void Add(string name, object value, DbType?dbType, ParameterDirection?direction, int?size)
 {
     this.parameters[DynamicParameters.Clean(name)] = new DynamicParameters.ParamInfo
     {
         Name  = name,
         Value = value,
         ParameterDirection = (direction ?? ParameterDirection.Input),
         DbType             = dbType,
         Size = size
     };
 }
예제 #2
0
 // Token: 0x06000035 RID: 53 RVA: 0x00002CE4 File Offset: 0x00000EE4
 public void Add(string name, object value = null, DbType?dbType = null, ParameterDirection?direction = null, int?size = null, byte?precision = null, byte?scale = null)
 {
     this.parameters[DynamicParameters.Clean(name)] = new DynamicParameters.ParamInfo
     {
         Name  = name,
         Value = value,
         ParameterDirection = (direction ?? ParameterDirection.Input),
         DbType             = dbType,
         Size      = size,
         Precision = precision,
         Scale     = scale
     };
 }
예제 #3
0
        // Token: 0x0600003C RID: 60 RVA: 0x000032FC File Offset: 0x000014FC
        public T Get <T>(string name)
        {
            DynamicParameters.ParamInfo paramInfo     = this.parameters[DynamicParameters.Clean(name)];
            IDbDataParameter            attachedParam = paramInfo.AttachedParam;
            object obj = (attachedParam == null) ? paramInfo.Value : attachedParam.Value;

            if (obj != DBNull.Value)
            {
                return((T)((object)obj));
            }
            if (default(T) != null)
            {
                throw new ApplicationException("Attempting to cast a DBNull to a non nullable type! Note that out/return parameters will not have updated values until the data stream completes (after the 'foreach' for Query(..., buffered: false), or after the GridReader has been disposed for QueryMultiple)");
            }
            return(default(T));
        }
예제 #4
0
        // Token: 0x0600003A RID: 58 RVA: 0x00002DA0 File Offset: 0x00000FA0
        protected void AddParameters(IDbCommand command, SqlMapper.Identity identity)
        {
            IList <SqlMapper.LiteralToken> literalTokens = SqlMapper.GetLiteralTokens(identity.sql);

            if (this.templates != null)
            {
                foreach (object obj in this.templates)
                {
                    SqlMapper.Identity identity2 = identity.ForDynamicParameters(obj.GetType());
                    Dictionary <SqlMapper.Identity, Action <IDbCommand, object> > obj2 = DynamicParameters.paramReaderCache;
                    Action <IDbCommand, object> action;
                    lock (obj2)
                    {
                        if (!DynamicParameters.paramReaderCache.TryGetValue(identity2, out action))
                        {
                            action = SqlMapper.CreateParamInfoGenerator(identity2, true, this.RemoveUnused, literalTokens);
                            DynamicParameters.paramReaderCache[identity2] = action;
                        }
                    }
                    action(command, obj);
                }
                foreach (object obj3 in command.Parameters)
                {
                    IDbDataParameter dbDataParameter = (IDbDataParameter)obj3;
                    if (!this.parameters.ContainsKey(dbDataParameter.ParameterName))
                    {
                        this.parameters.Add(dbDataParameter.ParameterName, new DynamicParameters.ParamInfo
                        {
                            AttachedParam      = dbDataParameter,
                            CameFromTemplate   = true,
                            DbType             = new DbType?(dbDataParameter.DbType),
                            Name               = dbDataParameter.ParameterName,
                            ParameterDirection = dbDataParameter.Direction,
                            Size               = new int?(dbDataParameter.Size),
                            Value              = dbDataParameter.Value
                        });
                    }
                }
                List <Action> list = this.outputCallbacks;
                if (list != null)
                {
                    foreach (Action action2 in list)
                    {
                        action2();
                    }
                }
            }
            foreach (DynamicParameters.ParamInfo paramInfo in this.parameters.Values)
            {
                if (!paramInfo.CameFromTemplate)
                {
                    DbType?dbType = paramInfo.DbType;
                    object value  = paramInfo.Value;
                    string text   = DynamicParameters.Clean(paramInfo.Name);
                    bool   flag2  = value is SqlMapper.ICustomQueryParameter;
                    SqlMapper.ITypeHandler typeHandler = null;
                    if (dbType == null && value != null && !flag2)
                    {
                        dbType = new DbType?(SqlMapper.LookupDbType(value.GetType(), text, true, out typeHandler));
                    }
                    if (flag2)
                    {
                        ((SqlMapper.ICustomQueryParameter)value).AddParameter(command, text);
                    }
                    else if (dbType == (DbType)(-1))
                    {
                        SqlMapper.PackListParameters(command, text, value);
                    }
                    else
                    {
                        bool             flag3 = !command.Parameters.Contains(text);
                        IDbDataParameter dbDataParameter2;
                        if (flag3)
                        {
                            dbDataParameter2 = command.CreateParameter();
                            dbDataParameter2.ParameterName = text;
                        }
                        else
                        {
                            dbDataParameter2 = (IDbDataParameter)command.Parameters[text];
                        }
                        dbDataParameter2.Direction = paramInfo.ParameterDirection;
                        if (typeHandler == null)
                        {
                            dbDataParameter2.Value = SqlMapper.SanitizeParameterValue(value);
                            if (dbType != null && dbDataParameter2.DbType != dbType)
                            {
                                dbDataParameter2.DbType = dbType.Value;
                            }
                            string text2 = value as string;
                            if (text2 != null && text2.Length <= 4000)
                            {
                                dbDataParameter2.Size = 4000;
                            }
                            if (paramInfo.Size != null)
                            {
                                dbDataParameter2.Size = paramInfo.Size.Value;
                            }
                            if (paramInfo.Precision != null)
                            {
                                dbDataParameter2.Precision = paramInfo.Precision.Value;
                            }
                            if (paramInfo.Scale != null)
                            {
                                dbDataParameter2.Scale = paramInfo.Scale.Value;
                            }
                        }
                        else
                        {
                            if (dbType != null)
                            {
                                dbDataParameter2.DbType = dbType.Value;
                            }
                            if (paramInfo.Size != null)
                            {
                                dbDataParameter2.Size = paramInfo.Size.Value;
                            }
                            if (paramInfo.Precision != null)
                            {
                                dbDataParameter2.Precision = paramInfo.Precision.Value;
                            }
                            if (paramInfo.Scale != null)
                            {
                                dbDataParameter2.Scale = paramInfo.Scale.Value;
                            }
                            typeHandler.SetValue(dbDataParameter2, value ?? DBNull.Value);
                        }
                        if (flag3)
                        {
                            command.Parameters.Add(dbDataParameter2);
                        }
                        paramInfo.AttachedParam = dbDataParameter2;
                    }
                }
            }
            if (literalTokens.Count != 0)
            {
                SqlMapper.ReplaceLiterals(this, command, literalTokens);
            }
        }
예제 #5
0
 public T Get <T>(string name)
 {
     return((T)((object)this.parameters[DynamicParameters.Clean(name)].AttachedParam.Value));
 }