类型系统.在Npgsql或PostgreSQL中不支持UInt32



使用Npgsql V3.0.3.0,我添加了一个新记录到一个表中,该表在数据库中有一个列,类型为OID,应该映射到UInt32 . net类型。

当执行insert命令时,会抛出以下异常"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

这个表中DataReaderGetSchemaTable方法报告OID列的"Data Type"是UInt32

由于OID是一个内部/非标准字段,Npgsql不会自动将UInt32写入OID;您需要通过将参数的NpgsqlDbType字段设置为Oid来显式地表示您想要写入OID。

最新更新