使用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
。
答案 0 :(得分:3)
由于OID是一个有点内部/非标准的字段,Npgsql不会自动将UInt32写为OID;您需要通过将参数的NpgsqlDbType
字段设置为Oid
来明确表示您要编写OID。