- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 - 53
 - 54
 - 55
 - 56
 - 57
 - 58
 - 59
 
                        private NpgsqlDbType GetDbType(Type clrType, bool large = false)
        {
            if (clrType == null)
                throw new ArgumentNullException("clrType");
            // Try to get underlying type if it is nullable type.
            clrType = Nullable.GetUnderlyingType(clrType) ?? clrType;
            if (clrType == typeof(int) || clrType == typeof(uint))
            {
                return NpgsqlDbType.Integer;
            }
            else if (clrType == typeof(byte) || clrType == typeof(sbyte) || clrType == typeof(short) || clrType == typeof(ushort))
            {
                return NpgsqlDbType.Smallint;
            }
            else if (clrType == typeof(long) || clrType == typeof(ulong))
            {
                return NpgsqlDbType.Bigint;
            }
            else if (clrType == typeof(double))
            {
                return NpgsqlDbType.Double;
            }
            else if (clrType == typeof(float))
            {
                return NpgsqlDbType.Real;
            }
            else if (clrType == typeof(decimal))
            {
                return NpgsqlDbType.Numeric;
            }
            else if (clrType == typeof(bool))
            {
                return NpgsqlDbType.Boolean;
            }
            else if (clrType == typeof(string))
            {
                return large ? NpgsqlDbType.Text : NpgsqlDbType.Varchar;
            }
            else if (clrType == typeof(char))
            {
                return NpgsqlDbType.Char;
            }
            else if (clrType == typeof(DateTime))
            {
                return NpgsqlDbType.Timestamp;
            }
            else if (clrType == typeof(Guid))
            {
                return NpgsqlDbType.Uuid;
            }
            else if (typeof(Array).IsAssignableFrom(clrType))
            {
                return NpgsqlDbType.Array | GetDbType(clrType.GetElementType(), large);
            }
            else
                throw new NotSupportedException(string.Format("Not supported clr type {0} to convert {1}.", clrType.FullName, typeof(NpgsqlDbType).FullName));
        }
                                 
        
Если от объекта взять TypeCode (http://msdn.microsoft.com/en-us/library/system.convert.gettypecode%28v=vs.110%29 .aspx)