我需要帮助解决在 PostgreSQL 中实现间隔列时遇到的问题。我正在使用基于 .NET 的客户端应用程序。
如果像这样创建一个 Timespan 对象:
TimeSpan startBalance = new TimeSpan(100, 0, 0); //100 hours
并将此值分配给 Poco 属性,如下所示:
//the poco property was generated as a string - not a Timespan - not sure why
Poco.Property = startBalance.ToString()
PetaPoco 插入在 PostgreSQL 数据库中创建以下间隔值:
“4 天 00:57:36”
当我尝试检索包含我之前保存的时间间隔的记录时 - 会生成一个 com 异常。
有几点需要注意...
数据库文件生成过程(POCO 创建)创建了一个字符串属性来表示 PostgreSQL 间隔列,而不是时间跨度属性。等于 100 小时(4 天 4 小时)的时间跨度插入为 4 天 57 分 36 秒。检索失败并出现此错误“对象必须实现 IConvertible”。如果我将间隔字段更新为 NULL,则检索工作。数据类型映射中的某些内容似乎不太正确。我对此的理解是 PostgreSQL 间隔映射到 NpgsqlDbType 间隔,这应该映射到 .NET TimeSpan。也许问题在于 PetaPoco 将数据类型视为字符串,不确定。需要大师。;-)