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); }
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); }