Revenj.DatabasePersistence.Postgres.QueryGeneration.QueryComposition.QueryParts.FormatObject C# (CSharp) Method

FormatObject() public method

public FormatObject ( object value ) : string
value object
return string
        public string FormatObject(object value)
        {
            if (value == null)
                return "NULL";
            var type = value.GetType();
            var serialization = ConverterFactory.GetSerializationFactory(type);
            if (serialization != null)
            {
                ///TODO use BuildTuple with quote method
                var result = "('" + serialization(value).Replace("'", "''") + "'::";
                string source = null;
                if (value is IIdentifiable || value is IEntity)
                    source = SqlSourceAttribute.FindSource(type);
                else if (value is ICloneable)
                    source = "\"" + type.Namespace + "\".\"" + type.Name + "\"";
                if (source == null)
                    throw new FrameworkException("Can't find source for " + type.FullName);
                return result + source + ").*";
            }
            else if (type.IsEnum)
            {
                return "'" + value + "'::\"" + type.Namespace + "\".\"" + type.Name + "\"";
            }
            if (NpgsqlTypes.TypeConverter.CanConvert(type))
            {
                var val = NpgsqlTypes.TypeConverter.Convert(type, value);
                var name = NpgsqlTypes.TypeConverter.GetTypeName(type);
                return val + "::" + name;
            }
            //TODO probably wrong. better to throw an exception!?
            return value.ToString();
        }

Usage Example

Example #1
0
		private string SimplifyConstantExpression(QueryParts query, SubqueryParts parts, string exp, ConstantExpression ce)
		{
			if (ce.Type.IsArray || ce.Value is Array)
			{
				var array = ((Array)ce.Value).Cast<object>().ToArray();
				return FormatInQuery(exp, array, parts);
			}
			else if (ce.Value is IEnumerable)
			{
				var array = ((IEnumerable)ce.Value).Cast<object>().ToArray();
				return FormatInQuery(exp, array, parts);
			}
			return exp + " = " + query.FormatObject(ce.Value);
		}