Example #1
0
        /// <summary>
        /// Check an input object is an acceptable parameter value type, convert if necessary.
        /// </summary>
        /// <param name="rawValue">A raw value object</param>
        /// <returns>An acceptable type parameter value</returns>
        public static object AsParameterValue(object rawValue)
        {
            if (rawValue == null)
            {
                return(DBNull.Value);
            }

            if (rawValue is IConvertible || rawValue is DataTable || rawValue is DbDataReader || rawValue is byte[])
            {
                return(rawValue);
            }

            JArray jArrayValue = rawValue as JArray;

            if (jArrayValue != null)
            {
                return(jArrayValue.AsParameterValue());
            }

            Array arrayValue = rawValue as Array;

            if (arrayValue != null)
            {
                if (arrayValue.Length == 0)
                {
                    return(null);                       // null: not to send the parameter	-- To review for empty SQL Server Table-Valued Parameter and Oracle Associative Array Parameter
                }
                if (arrayValue.GetValue(0) is IConvertible)
                {
                    return(arrayValue);
                }
            }

            Type elementType = rawValue.GetType().GetEnumerableElementType();

            if (elementType == null)
            {
                return(rawValue);
            }
            else
            {
                return((rawValue as IEnumerable).AsParameterValue(elementType));
            }
        }
        /// <summary>
        /// Check an input object is an acceptable parameter value type, convert if necessary.
        /// </summary>
        /// <param name="rawValue">A raw value object</param>
        /// <returns>An acceptable type parameter value</returns>
        public static object AsParameterValue(object rawValue)
        {
            if (rawValue == null)
            {
                return(DBNull.Value);
            }

            if (rawValue is IConvertible || rawValue is DataTable || rawValue is DbDataReader || rawValue is byte[])
            {
                return(rawValue);
            }

            JArray jArrayValue = rawValue as JArray;

            if (jArrayValue != null)
            {
                return(jArrayValue.AsParameterValue());
            }

            Array arrayValue = rawValue as Array;

            if (arrayValue != null)
            {
                if (arrayValue.Length == 0)
                {
                    return(null);                       // null: not to send the parameter	-- To review for empty SQL Server Table-Valued Parameter and Oracle Associative Array Parameter
                }
                if (arrayValue.GetValue(0) is IConvertible)
                {
                    return(arrayValue);
                }
            }

            Type elementType = rawValue.GetType().GetEnumerableElementType();

            if (elementType == null)
            {
                return(rawValue);
            }

            #region When the rawValue is IEnumerable<T>

            if (typeof(IConvertible).IsAssignableFrom(elementType))
            {
                return((rawValue as IEnumerable).AsOfType <IConvertible>().AsParameterValue());
            }

            if (typeof(SqlDataRecord).IsAssignableFrom(elementType))
            {
                return((rawValue as IEnumerable).AsOfType <SqlDataRecord>().AsParameterValue());
            }

            if (typeof(IDictionary <string, object>).IsAssignableFrom(elementType))
            {
                return((rawValue as IEnumerable).AsOfType <IDictionary <string, object> >().AsParameterValue());
            }

            return((rawValue as IEnumerable).AsOfType <object>().AsParameterValue());

            #endregion
        }
Example #3
0
        /// <summary>
        /// Check an input object is an acceptable parameter value type, convert if necessary.
        /// </summary>
        /// <param name="rawValue">A raw value object</param>
        /// <returns>An acceptable type parameter value</returns>
        public static object AsParameterValue(object rawValue)
        {
            if (rawValue == null)
            {
                return(DBNull.Value);
            }

            if (rawValue is IConvertible || rawValue is DataTable || rawValue is DbDataReader)
            {
                return(rawValue);
            }

            JArray jArrayValue = rawValue as JArray;

            if (jArrayValue != null)
            {
                return(jArrayValue.AsParameterValue());
            }

            Array arrayValue = rawValue as Array;

            if (arrayValue != null)
            {
                if (arrayValue.Length == 0)
                {
                    return(null);
                }

                if (arrayValue.GetValue(0) is IConvertible)
                {
                    return(arrayValue);
                }
            }

            Type elementType = rawValue.GetType().GetEnumerableElementType();

            if (elementType == null)
            {
                return(rawValue);
            }

            #region When the rawValue is IEnumerable<T>

            if (typeof(IConvertible).IsAssignableFrom(elementType))
            {
                return((rawValue as IEnumerable).AsOfType <IConvertible>().AsParameterValue());
            }

            if (typeof(SqlDataRecord).IsAssignableFrom(elementType))
            {
                return((rawValue as IEnumerable).AsOfType <SqlDataRecord>().AsParameterValue());
            }

            if (typeof(IDictionary <string, object>).IsAssignableFrom(elementType))
            {
                return((rawValue as IEnumerable).AsOfType <IDictionary <string, object> >().AsParameterValue());
            }

            return((rawValue as IEnumerable).AsOfType <object>().AsParameterValue());

            #endregion
        }