Table of Contents

Interface INpgsqlTypeMapper

Namespace
Npgsql.TypeMapping
Assembly
Npgsql.dll

A type mapper, managing how to read and write CLR values to PostgreSQL data types. A type mapper exists for each connection, as well as a single global type mapper (accessible via NpgsqlConnection.GlobalTypeMapper).

public interface INpgsqlTypeMapper

Properties

DefaultNameTranslator

The default name translator to convert CLR type names and member names.

INpgsqlNameTranslator DefaultNameTranslator { get; }

Property Value

INpgsqlNameTranslator

Mappings

Enumerates all mappings currently set up on this type mapper.

IEnumerable<NpgsqlTypeMapping> Mappings { get; }

Property Value

IEnumerable<NpgsqlTypeMapping>

Methods

AddMapping(NpgsqlTypeMapping)

Adds a new type mapping to this mapper, overwriting any existing mapping in the process.

INpgsqlTypeMapper AddMapping(NpgsqlTypeMapping mapping)

Parameters

mapping NpgsqlTypeMapping

Returns

INpgsqlTypeMapper

MapComposite<T>(string, INpgsqlNameTranslator)

Maps a CLR type to a PostgreSQL composite type.

INpgsqlTypeMapper MapComposite<T>(string pgName = null, INpgsqlNameTranslator nameTranslator = null) where T : new()

Parameters

pgName string

A PostgreSQL type name for the corresponding enum type in the database. If null, the name translator given in nameTranslatorwill be used.

nameTranslator INpgsqlNameTranslator

A component which will be used to translate CLR names (e.g. SomeClass) into database names (e.g. some_class). Defaults to NpgsqlSnakeCaseNameTranslator

Returns

INpgsqlTypeMapper

Type Parameters

T

The .NET type to be mapped

Remarks

CLR fields and properties by string to PostgreSQL enum labels. The translation strategy can be controlled by the nameTranslator parameter, which defaults to NpgsqlSnakeCaseNameTranslator. You can also use the PgNameAttribute on your members to manually specify a PostgreSQL enum label. If there is a discrepancy between the .NET and database labels while a composite is read or written, an exception will be raised.

MapEnum<TEnum>(string, INpgsqlNameTranslator)

Maps a CLR enum to a PostgreSQL enum type.

INpgsqlTypeMapper MapEnum<TEnum>(string pgName = null, INpgsqlNameTranslator nameTranslator = null) where TEnum : struct

Parameters

pgName string

A PostgreSQL type name for the corresponding enum type in the database. If null, the name translator given in nameTranslatorwill be used.

nameTranslator INpgsqlNameTranslator

A component which will be used to translate CLR names (e.g. SomeClass) into database names (e.g. some_class). Defaults to NpgsqlSnakeCaseNameTranslator

Returns

INpgsqlTypeMapper

Type Parameters

TEnum

The .NET enum type to be mapped

Remarks

CLR enum labels are mapped by name to PostgreSQL enum labels. The translation strategy can be controlled by the nameTranslator parameter, which defaults to NpgsqlSnakeCaseNameTranslator. You can also use the PgNameAttribute on your enum fields to manually specify a PostgreSQL enum label. If there is a discrepancy between the .NET and database labels while an enum is read or written, an exception will be raised.

RemoveMapping(string)

Removes an existing mapping from this mapper. Attempts to read or write this type after removal will result in an exception.

bool RemoveMapping(string pgTypeName)

Parameters

pgTypeName string

A PostgreSQL type name for the type in the database.

Returns

bool

Reset()

Resets all mapping changes performed on this type mapper and reverts it to its original, starting state.

void Reset()

UnmapComposite<T>(string, INpgsqlNameTranslator)

Removes an existing enum mapping.

bool UnmapComposite<T>(string pgName = null, INpgsqlNameTranslator nameTranslator = null) where T : new()

Parameters

pgName string

A PostgreSQL type name for the corresponding composite type in the database. If null, the name translator given in nameTranslatorwill be used.

nameTranslator INpgsqlNameTranslator

A component which will be used to translate CLR names (e.g. SomeClass) into database names (e.g. some_class). Defaults to NpgsqlSnakeCaseNameTranslator

Returns

bool

Type Parameters

T

UnmapEnum<TEnum>(string, INpgsqlNameTranslator)

Removes an existing enum mapping.

bool UnmapEnum<TEnum>(string pgName = null, INpgsqlNameTranslator nameTranslator = null) where TEnum : struct

Parameters

pgName string

A PostgreSQL type name for the corresponding enum type in the database. If null, the name translator given in nameTranslator will be used.

nameTranslator INpgsqlNameTranslator

A component which will be used to translate CLR names (e.g. SomeClass) into database names (e.g. some_class). Defaults to NpgsqlSnakeCaseNameTranslator

Returns

bool

Type Parameters

TEnum