2

我需要帮助解决在 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 将数据类型视为字符串,不确定。需要大师。;-)

4

0 回答 0