PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Matrice di tipo composito come input di stored procedure passato da C# Npgsql

Mappatura dei tipi CLR

È ancora possibile, e in alcuni casi necessario, impostare una mappatura esplicita per i tuoi tipi CLR. In questo modo si ottengono i seguenti vantaggi:

Sai più che devi specificare la proprietà DataTypeName sul tuo parametro. Npgsql dedurrà il tipo di dati dal tipo CLR fornito.

I metodi di lettura non tipizzati come NpgsqlDataReader.GetValue() restituiranno il tuo tipo CLR, invece di un oggetto dinamico (vedi sotto). In generale dovresti usare il tipo NpgsqlDataReader.GetFieldValue(), quindi questo non dovrebbe essere importante.

Puoi personalizzare la mappatura dei nomi in base al tipo (vedi sotto). Per impostare una mappatura globale per tutte le tue connessioni, inserisci questo codice prima della prima apertura:

 NpgsqlConnection.GlobalTypeMapper.MapEnum<SomeEnum>("some_enum");
 NpgsqlConnection.GlobalTypeMapper.MapComposite<SomeType>("some_composite");

Se non desideri impostare una mappatura per tutte le tue connessioni, puoi configurarne una sola:

var conn = new NpgsqlConnection(...);
conn.TypeMapper.MapEnum<SomeEnum>("some_enum");
conn.TypeMapper.MapComposite<SomeType>("some_composite");

http://www.npgsql.org/doc/types/enums_and_composites.html