Npgsql或PostgreSQL不支持System.UInt32类型

时间:2015-10-05 23:19:24

标签: postgresql npgsql

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

执行insert命令时,抛出以下异常" Npgsql或PostgreSQL不支持此.NET类型: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

此表格中GetSchemaTable的{​​{1}}方法报告了"数据类型"对于OID列,DataReader

1 个答案:

答案 0 :(得分:3)

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