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 上 DataReader
的 GetSchemaTable
方法报告 OID 列的 "Data Type" 是 UInt32
。
由于 OID 有点 internal/non-standard 字段,Npgsql 不会自动将 UInt32 写为 OID;你需要通过将参数的 NpgsqlDbType
字段设置为 Oid
.
来明确地说你想写一个 OID
使用 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 上 DataReader
的 GetSchemaTable
方法报告 OID 列的 "Data Type" 是 UInt32
。
由于 OID 有点 internal/non-standard 字段,Npgsql 不会自动将 UInt32 写为 OID;你需要通过将参数的 NpgsqlDbType
字段设置为 Oid
.