sql >> Base de Datos >  >> RDS >> PostgreSQL

Matriz de tipo compuesto como entrada de procedimiento almacenado pasada por C# Npgsql

Asignación de tipos de CLR

Todavía es posible, y en algunos casos necesario, configurar un mapeo explícito para sus tipos CLR. Hacerlo proporciona las siguientes ventajas:

Ya sabe que necesita especificar la propiedad DataTypeName en su parámetro. Npgsql deducirá el tipo de datos del tipo de CLR proporcionado.

Los métodos de lectura sin tipo como NpgsqlDataReader.GetValue() devolverán su tipo CLR, en lugar de un objeto dinámico (ver más abajo). En general, debería usar el tipo NpgsqlDataReader.GetFieldValue(), por lo que esto no debería ser importante.

Puede personalizar la asignación de nombres según el tipo (consulte a continuación). Para configurar una asignación global para todas sus conexiones, coloque este código antes de su primera apertura:

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

Si no desea configurar un mapeo para todas sus conexiones, puede configurarlo solo para una conexión:

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