Npgsql 或您的 PostgreSQL 不支持 System.UInt32 类型

Type System.UInt32 is not supported in Npgsql or your PostgreSQL

使用 Npgsql V3.0.3.0 我正在向一个表中添加一条新记录,该表在数据库中有一个 OID 类型的列,它应该映射到 UInt32 .Net 类型。

执行插入命令时会抛出以下异常"Npgsql 或您的PostgreSQL 不支持此.NET 类型:System.UInt32"。

异常中的堆栈跟踪是:

1
2
3
4
5
6
7
at Npgsql.TypeHandlerRegistry.get_Item(TYPE TYPE)
at Npgsql.TypeHandlerRegistry.get_Item(Object VALUE)
at Npgsql.NpgsqlParameter.ResolveHandler(TypeHandlerRegistry registry)
at Npgsql.NpgsqlParameter.Bind(TypeHandlerRegistry registry)
at Npgsql.NpgsqlCommand.ValidateAndCreateMessages(CommandBehavior behavior)
at Npgsql.NpgsqlCommand.ExecuteNonQueryInternal()
at Npgsql.NpgsqlCommand.ExecuteNonQuery

来自此表的 DataReaderGetSchemaTable 方法报告 OID 列的"数据类型"是 UInt32


由于 OID 是一个内部/非标准字段,Npgsql 不会自动将 UInt32 写为 OID;您需要通过将参数的 NpgsqlDbType 字段设置为 Oid.

来明确表示您要写入 OID