public static Field Create(object value) { // Numeric values ... if (value is bool) { return(Boolean((bool)value)); } if (value is byte) { return(TinyInt((byte)value)); } if (value is short) { return(SmallInt((short)value)); } if (value is int) { return(Integer((int)value)); } if (value is long) { return(BigInt((long)value)); } if (value is float) { return(Float((float)value)); } if (value is double) { return(Double((double)value)); } if (value is SqlNumber) { var num = (SqlNumber)value; if (num.IsNull) { return(Null(PrimitiveTypes.Numeric())); } if (num.CanBeInt32) { return(Integer(num.ToInt32())); } if (num.CanBeInt64) { return(BigInt(num.ToInt64())); } return(Number(num)); } if (value is SqlDateTime) { return(Date((SqlDateTime)value)); } if (value is DateTime) { return(Date((DateTime)value)); } if (value is DateTimeOffset) { return(Date((DateTimeOffset)value)); } // String values ... if (value is string) { return(String((string)value)); } if (value is SqlString) { var s = (SqlString)value; if (s.IsNull) { return(Null(PrimitiveTypes.String())); } return(String(s)); } if (value is SqlLongString) { var clob = (SqlLongString)value; if (clob.IsNull) { return(Null(PrimitiveTypes.Clob())); } return(Clob(clob)); } if (value == null) { return(Null()); } // Trivial case if (value is Field) { return((Field)value); } throw new NotSupportedException("Cannot build an object from the given value."); }
public static Field Clob(SqlLongString s) { return(new Field(PrimitiveTypes.Clob(s.Encoding, (int)s.Length), s)); }