Esempio n. 1
0
        /// <summary>
        /// Update a specific named parameter with the given value.
        /// </summary>
        /// <param name="paramName">The parameter whose value to set</param>
        /// <param name="paramValue">The value being assigned to the parameter</param>
        public void SetParameter(string paramName, object paramValue)
        {
            FieldMap fm = map != null?map.GetFieldMapFromColumn(paramName) : null;

            // support setting parameters without using the prefix character
            if (!cmd.Parameters.Contains(paramName))
            {
                GentleSqlFactory sf = broker.GetSqlFactory();
                paramName = sf.GetParameterPrefix() + paramName + sf.GetParameterSuffix();
            }
            Check.Verify(cmd.Parameters.Contains(paramName), Error.NoSuchParameter, paramName);
            IDataParameter param = (IDataParameter)cmd.Parameters[paramName];

            SetParameter(param, paramValue, fm);
        }
Esempio n. 2
0
        /// <summary>
        /// <p>Update the statement parameter values using the values from the key.</p>
        /// <p>Warning! This will erase all parameter values not in the key, so if you
        /// need to set additional parameters be sure to call this method before
        /// any calls to SetParameter.</p>
        /// </summary>
        /// <param name="key">The key instance containing the parameter values.</param>
        /// <param name="isUpdateAll">If true all statement parameters will be updated. If the
        /// key has no value a null value will be assigned.</param>
        public void SetParameters(Key key, bool isUpdateAll)
        {
            Check.VerifyNotNull(key, Error.NullParameter, "key");
            GentleSqlFactory sf = broker.GetSqlFactory();

            foreach (IDataParameter param in cmd.Parameters)
            {
                // strip leading @ character if present
                string prefix    = sf.GetParameterPrefix();
                string suffix    = sf.GetParameterSuffix();
                string paramName = param.ParameterName;
                if (paramName.StartsWith(prefix))
                {
                    paramName = paramName.Substring(prefix.Length, paramName.Length - prefix.Length);
                }
                //if needed, strip out the suffix from the paramName/column name
                if (suffix != "" && paramName.EndsWith(suffix))
                {
                    paramName = paramName.Substring(0, paramName.Length - suffix.Length);
                }
                FieldMap fm = map.GetFieldMapFromColumn(paramName);
                // handle special case where parameter is concurrency control column
                if (fm == null && map.ConcurrencyMap != null && paramName.StartsWith("New") &&
                    (paramName.Substring(3, paramName.Length - 3) == map.ConcurrencyMap.ColumnName))
                {
                    fm = map.ConcurrencyMap;
                }
                // if key contains property names translate parameter name into property name
                string index = key.isPropertyKeys ? fm.MemberName : paramName;
                // check if we should set parameter value
                if (key.ContainsKey(index) || isUpdateAll)
                {
                    Check.VerifyNotNull(fm, Error.Unspecified, "Could not find a value for the parameter named {0}", index);
                    SetParameter(param, key.ContainsKey(index) ? key[index] : null, fm);
                }
            }
        }