首页 > 解决方案 > 将 reader.GetGuid(0) 与 Postgres 一起使用时出现奇怪的错误

问题描述

我的 MySQL 版本中有这样的声明:

Guid id = reader.GetGuid(0);

它有效。我在我的 PostgreSQL 版本的其他方法中也有相同的声明,它们也可以工作。但是,在一种 PostgreSQL 方法中,我必须将其替换为以下内容才能使其工作:

string idText = reader.GetString(0);
Guid id = Guid.Parse(idText);

这是 Npgsql 的错误吗?

编辑:抛出此错误:

{System.InvalidCastException: Can't cast database type character to Guid
   at Npgsql.NpgsqlDefaultDataReader.GetFieldValue[T](Int32 column)

标签: c#postgresqlnpgsql

解决方案


我无法测试,但 Npgsql 期望该列是uuid并且可能不支持从文本进行隐式转换。您可以在此处阅读有关这些类型映射的更多信息:https ://www.npgsql.org/doc/types/basic.html


推荐阅读