public static object ConvertNumber(this IOrmLiteDialectProvider dialectProvider, Type toIntegerType, object value)
        {
            if (value.GetType() == toIntegerType)
            {
                return(value);
            }

            var typeCode = toIntegerType.GetUnderlyingTypeCode();

            switch (typeCode)
            {
            case TypeCode.Byte:
                return(Convert.ToByte(value));

            case TypeCode.SByte:
                return(Convert.ToSByte(value));

            case TypeCode.Int16:
                return(Convert.ToInt16(value));

            case TypeCode.UInt16:
                return(Convert.ToUInt16(value));

            case TypeCode.Int32:
                return(Convert.ToInt32(value));

            case TypeCode.UInt32:
                return(Convert.ToUInt32(value));

            case TypeCode.Int64:
                return(Convert.ToInt64(value));

            case TypeCode.UInt64:
                var byteValue = value as byte[];
                if (byteValue != null)
                {
                    return(OrmLiteUtils.ConvertToULong(byteValue));
                }
                return(Convert.ToUInt64(value));

            case TypeCode.Single:
                return(Convert.ToSingle(value));

            case TypeCode.Double:
                return(Convert.ToDouble(value));

            case TypeCode.Decimal:
                return(Convert.ToDecimal(value));
            }

            var convertedValue = dialectProvider.StringSerializer.DeserializeFromString(value.ToString(), toIntegerType);

            return(convertedValue);
        }
        public static object ConvertNumber(this IOrmLiteConverter converter, Type toIntegerType, object value)
        {
            var typeCode = toIntegerType.GetUnderlyingTypeCode();

            switch (typeCode)
            {
            case TypeCode.Int16:
                return(value is short?value : Convert.ToInt16(value));

            case TypeCode.UInt16:
                return(value is ushort?value : Convert.ToUInt16(value));

            case TypeCode.Int32:
                return(value is int?value : Convert.ToInt32(value));

            case TypeCode.UInt32:
                return(value is uint?value : Convert.ToUInt32(value));

            case TypeCode.Int64:
                return(value is long?value : Convert.ToInt64(value));

            case TypeCode.UInt64:
                if (value is ulong)
                {
                    return(value);
                }
                var byteValue = value as byte[];
                if (byteValue != null)
                {
                    return(OrmLiteUtils.ConvertToULong(byteValue));
                }
                return(Convert.ToUInt64(value));

            case TypeCode.Single:
                return(value is float?value : Convert.ToSingle(value));

            case TypeCode.Double:
                return(value is double?value : Convert.ToDouble(value));

            case TypeCode.Decimal:
                return(value is decimal ? value : Convert.ToDecimal(value));
            }

            var convertedValue = converter.DialectProvider.StringSerializer.DeserializeFromString(value.ToString(), toIntegerType);

            return(convertedValue);
        }