我需要帮助解决在PostgreSQL中实现 interval 列时遇到的问题。我正在使用基于.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间隔列,而不是Timespan属性。 Timespan等于100小时(4天和4小时)插入为4天57分36秒。检索失败并显示此错误“对象必须实现IConvertible”。如果我将interval字段更新为NULL,则检索工作。看来数据类型映射中的某些内容并不完全正确。我对此的理解是PostgreSQL间隔映射到NpgsqlDbType间隔,这应该映射到.NET TimeSpan。也许问题是PetaPoco将数据类型视为字符串,不确定。需要一个大师。 ; - )