/// <summary> /// Converts the DbType object to another type /// </summary> /// <param name="context">Context type</param> /// <param name="culture">Culture info</param> /// <param name="value"></param> /// <param name="destinationType"></param> /// <returns></returns> public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) { if (value == null) { return(null); } if (ConvertToTypes.ContainsKey(destinationType)) { return(ConvertToTypes[destinationType](value)); } return(base.ConvertFrom(context, culture, value)); }
/// <summary> /// Constructor /// </summary> public DbTypeTypeConverter() { ConvertToTypes.Add(typeof(Type), DbTypeToType); ConvertToTypes.Add(typeof(SqlDbType), DbTypeToSqlDbType); ConvertFromTypes.Add(typeof(Type).GetType(), TypeToDbType); ConvertFromTypes.Add(typeof(SqlDbType), SqlDbTypeToDbType); }
/// <summary> /// Constructor /// </summary> public SqlDbTypeTypeConverter() : base() { ConvertToTypes.Add(typeof(Type), SqlDbTypeToType); ConvertToTypes.Add(typeof(DbType), SqlDbTypeToDbType); ConvertFromTypes.Add(typeof(Type).GetType(), TypeToSqlDbType); ConvertFromTypes.Add(typeof(DbType), DbTypeToSqlDbType); Conversions = new ConcurrentDictionary <Type, DbType>(); Conversions.AddOrUpdate(typeof(byte), DbType.Byte, (x, y) => y); Conversions.AddOrUpdate(typeof(byte?), DbType.Byte, (x, y) => y); Conversions.AddOrUpdate(typeof(sbyte), DbType.SByte, (x, y) => y); Conversions.AddOrUpdate(typeof(sbyte?), DbType.SByte, (x, y) => y); Conversions.AddOrUpdate(typeof(short), DbType.Int16, (x, y) => y); Conversions.AddOrUpdate(typeof(short?), DbType.Int16, (x, y) => y); Conversions.AddOrUpdate(typeof(ushort), DbType.UInt16, (x, y) => y); Conversions.AddOrUpdate(typeof(ushort?), DbType.UInt16, (x, y) => y); Conversions.AddOrUpdate(typeof(int), DbType.Int32, (x, y) => y); Conversions.AddOrUpdate(typeof(int?), DbType.Int32, (x, y) => y); Conversions.AddOrUpdate(typeof(uint), DbType.UInt32, (x, y) => y); Conversions.AddOrUpdate(typeof(uint?), DbType.UInt32, (x, y) => y); Conversions.AddOrUpdate(typeof(long), DbType.Int64, (x, y) => y); Conversions.AddOrUpdate(typeof(long?), DbType.Int64, (x, y) => y); Conversions.AddOrUpdate(typeof(ulong), DbType.UInt64, (x, y) => y); Conversions.AddOrUpdate(typeof(ulong?), DbType.UInt64, (x, y) => y); Conversions.AddOrUpdate(typeof(float), DbType.Single, (x, y) => y); Conversions.AddOrUpdate(typeof(float?), DbType.Single, (x, y) => y); Conversions.AddOrUpdate(typeof(double), DbType.Double, (x, y) => y); Conversions.AddOrUpdate(typeof(double?), DbType.Double, (x, y) => y); Conversions.AddOrUpdate(typeof(decimal), DbType.Decimal, (x, y) => y); Conversions.AddOrUpdate(typeof(decimal?), DbType.Decimal, (x, y) => y); Conversions.AddOrUpdate(typeof(bool), DbType.Boolean, (x, y) => y); Conversions.AddOrUpdate(typeof(bool?), DbType.Boolean, (x, y) => y); Conversions.AddOrUpdate(typeof(string), DbType.String, (x, y) => y); Conversions.AddOrUpdate(typeof(char), DbType.StringFixedLength, (x, y) => y); Conversions.AddOrUpdate(typeof(char?), DbType.StringFixedLength, (x, y) => y); Conversions.AddOrUpdate(typeof(Guid), DbType.Guid, (x, y) => y); Conversions.AddOrUpdate(typeof(Guid?), DbType.Guid, (x, y) => y); Conversions.AddOrUpdate(typeof(DateTime), DbType.DateTime2, (x, y) => y); Conversions.AddOrUpdate(typeof(DateTime?), DbType.DateTime2, (x, y) => y); Conversions.AddOrUpdate(typeof(DateTimeOffset), DbType.DateTimeOffset, (x, y) => y); Conversions.AddOrUpdate(typeof(DateTimeOffset?), DbType.DateTimeOffset, (x, y) => y); Conversions.AddOrUpdate(typeof(byte[]), DbType.Binary, (x, y) => y); }