Beispiel #1
0
        private string?ResolveDatabaseType(Type type)
        {
            if (DatabaseTypeMemo.Value.TryFind(type, out var value))
            {
                return(value);
            }

            value = GetTypeMapping(type)?.PgTypeName;

            DatabaseTypeMemo.Swap(d => d.AddOrUpdate(type, value));

            return(value);
        }
Beispiel #2
0
        protected override void storeMappings()
        {
            // Initialize PgTypeMemo with Types which are not available in Npgsql mappings
            DatabaseTypeMemo.Swap(d => d.AddOrUpdate(typeof(long), "bigint"));
            DatabaseTypeMemo.Swap(d => d.AddOrUpdate(typeof(Guid), "uuid"));
            DatabaseTypeMemo.Swap(d => d.AddOrUpdate(typeof(string), "varchar"));
            DatabaseTypeMemo.Swap(d => d.AddOrUpdate(typeof(float), "decimal"));

            // Default Npgsql mapping is 'numeric' but we are using 'decimal'
            DatabaseTypeMemo.Swap(d => d.AddOrUpdate(typeof(decimal), "decimal"));

            // Default Npgsql mappings is 'timestamp' but we are using 'timestamp without time zone'
            DatabaseTypeMemo.Swap(d => d.AddOrUpdate(typeof(DateTime), "timestamp without time zone"));

            AddTimespanTypes(NpgsqlDbType.Timestamp, ResolveTypes(NpgsqlDbType.Timestamp));
            AddTimespanTypes(NpgsqlDbType.TimestampTz, ResolveTypes(NpgsqlDbType.TimestampTz));

            RegisterMapping(typeof(uint), "oid", NpgsqlDbType.Oid);
        }