/// <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 }
/// <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 }