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

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

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

执行插入命令时抛出以下异常"This .NET type is not supported in Npgsql or your PostgreSQL: System.UInt32".

异常中的堆栈跟踪是:

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

此 table 上 DataReaderGetSchemaTable 方法报告 OID 列的 "Data Type" 是 UInt32

由于 OID 有点 internal/non-standard 字段,Npgsql 不会自动将 UInt32 写为 OID;你需要通过将参数的 NpgsqlDbType 字段设置为 Oid.

来明确地说你想写一个 OID