Example #1
0
 public override void BindDateTime(DbParameter parameter, object value)
 {
     if (value != null)
     {
         value = ValueRangeValidator.Correct((DateTime)value, dateTimeRange);
     }
     base.BindDateTime(parameter, value);
 }
Example #2
0
        public override void BindDateTimeOffset(DbParameter parameter, object value)
        {
            parameter.DbType = DbType.String;
            if (value == null)
            {
                parameter.Value = DBNull.Value;
                return;
            }
            var correctValue = ValueRangeValidator.Correct((DateTimeOffset)value, dateTimeOffsetRange);

            parameter.Value = correctValue.ToString(DateTimeOffsetFormat, CultureInfo.InvariantCulture);
        }
        public override string Translate(SqlCompilerContext context, object literalValue)
        {
            var literalType = literalValue.GetType();

            if (literalType == typeof(DateTimeOffset))
            {
                var dateTimeOffset      = (DateTimeOffset)literalValue;
                var dateTimeOffsetRange = (ValueRange <DateTimeOffset>)Driver.ServerInfo.DataTypes.DateTimeOffset.ValueRange;
                var newValue            = ValueRangeValidator.Correct(dateTimeOffset, dateTimeOffsetRange);
                return(newValue.ToString(DateTimeOffsetFormatString));
            }
            return(base.Translate(context, literalValue));
        }
        public override string Translate(SqlCompilerContext context, object literalValue)
        {
            var literalType = literalValue.GetType();

            if (literalType == typeof(string) || literalType == typeof(char))
            {
                return("N" + QuoteString(literalValue.ToString()));
            }
            if (literalType == typeof(TimeSpan))
            {
                return(Convert.ToString((long)((TimeSpan)literalValue).Ticks * 100));
            }
            if (literalType == typeof(Boolean))
            {
                return(((bool)literalValue) ? "cast(1 as bit)" : "cast(0 as bit)");
            }
            if (literalType == typeof(DateTime))
            {
                var dateTime      = (DateTime)literalValue;
                var dateTimeRange = (ValueRange <DateTime>)Driver.ServerInfo.DataTypes.DateTime.ValueRange;
                var newValue      = ValueRangeValidator.Correct(dateTime, dateTimeRange);
                return(newValue.ToString(DateTimeFormatString));
            }
            if (literalType == typeof(byte[]))
            {
                var array   = (byte[])literalValue;
                var builder = new StringBuilder(2 * (array.Length + 1));
                builder.Append("0x");
                builder.AppendHexArray(array);
                return(builder.ToString());
            }
            if (literalType == typeof(Guid))
            {
                return(QuoteString(literalValue.ToString()));
            }
            if (literalType == typeof(Int64))
            {
                return(String.Format("CAST({0} as BIGINT)", literalValue));
            }
            return(base.Translate(context, literalValue));
        }