使用 Npgsql V3.0.3.0,我正在向一个表中添加一条新记录,该表在数据库中有一个类型为 OID 的列,该列应映射到 UInt32
.Net 类型。
执行插入命令时抛出以下异常“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
此表上 DataReader
的 GetSchemaTable
方法报告 OID 列的“数据类型”是 UInt32
。
最佳答案
由于 OID 是一个有点内部/非标准的字段,Npgsql 不会自动将 UInt32 写为 OID;您需要通过将参数的 NpgsqlDbType
字段设置为 Oid
来明确说明您要编写 OID。
关于postgresql - Npgsql 或您的 PostgreSQL 不支持类型 System.UInt32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32959377/