public PostgresSharedSqlDataTypeProvider(ConstraintDefaults constraintDefaults, bool nativeUuids, bool nativeEnums)
            : base(constraintDefaults)
        {
            this.NativeUuids = nativeUuids;
            this.NativeEnums = nativeEnums;

            this.blobSqlDataType = new DefaultBlobSqlDataType(constraintDefaults, "BYTEA");

            DefineSqlDataType(typeof(bool), "BOOLEAN", "GetBoolean");
            DefineSqlDataType(typeof(short), "SMALLINT", "GetInt16");
            DefineSqlDataType(typeof(int), "INTEGER", "GetInt32");

            DefineSqlDataType(typeof(ushort), "SMALLINT", "GetUInt16");
            DefineSqlDataType(typeof(uint), "INTEGER", "GetUInt32");
            DefineSqlDataType(typeof(ulong), "BIGINT", "GetUInt64");

            DefineSqlDataType(typeof(double), "DOUBLE PRECISION", "GetDouble");
            DefineSqlDataType(typeof(byte), "SMALLINT", "GetByte");
            DefineSqlDataType(typeof(sbyte), "SMALLINT", "GetByte");
            DefineSqlDataType(typeof(decimal), "NUMERIC(57, 28)", "GetDecimal");

            DefineSqlDataType(new UniversalTimeNormalisingDateTimeSqlDateType(this.ConstraintDefaults, "TIMESTAMP", false));
            DefineSqlDataType(new UniversalTimeNormalisingDateTimeSqlDateType(this.ConstraintDefaults, "TIMESTAMP", true));

            DefineSqlDataType(new PostgresSharedTimespanSqlDataType(this.ConstraintDefaults, typeof(TimeSpan)));
            DefineSqlDataType(new PostgresSharedTimespanSqlDataType(this.ConstraintDefaults, typeof(TimeSpan?)));

            if (nativeUuids)
            {
                DefineSqlDataType(new PostgresSharedUuidSqlDataType(this.ConstraintDefaults, typeof(Guid)));
                DefineSqlDataType(new PostgresSharedUuidSqlDataType(this.ConstraintDefaults, typeof(Guid?)));
            }
        }
 protected internal void DefineSqlDataType(SqlDataType sqlDataType)
 {
     this.sqlDataTypesByType[sqlDataType.SupportedType] = sqlDataType;
 }
 protected void DefineSqlDataType(SqlDataType sqlDataType)
 {
     sqlDataTypesByType[sqlDataType.SupportedType] = sqlDataType;
 }
 protected void DefineSqlDataType(SqlDataType sqlDataType)
 {
     sqlDataTypesByType[sqlDataType.SupportedType] = sqlDataType;
 }