在Postgres中使用reader.GetGuid(0)会产生奇怪的错误

时间:2018-09-02 23:07:15

标签: c# postgresql npgsql

我的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)

1 个答案:

答案 0 :(得分:0)

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