1

我编写了一个 C# netcoreapp 3.1 webapi 应用程序,它尝试通过 Npgsql.EntityFrameworkCore.PostgreSQL 3.1.0 读取 Teiid VDB 表。

每当我的应用读取任何这样的数据时:

_context.Campaigns.ToList();

出现以下错误:

NotSupportedException: The deprecated floating-point date/time format is not supported by Npgsql.

谷歌搜索我发现了这个:Npgsql: Old floating point representation for timestamps not supported。不幸的是,Npgsql.EntityFrameworkCore.PostgreSQL 项目停止支持已弃用的 PostgreSQL 浮点日期/时间格式,但 Teiid 似乎仍在使用它。

我还尝试了 Npgsql.EntityFrameworkCore.PostgreSQL 的旧版本 2.2.4 和 .net Core 2 应用程序,该应用程序没有此问题,但无法从/向 Teiid 读取和写入双精度值。

AFAIK,从 .net Core 应用程序访问 Teiid 数据的唯一有效方法是通过 System.Data.ODBC。

Teiid 是否有任何配置或调整以使用新的整数日期/时间格式进行 PostgreSQL 仿真?

或者如果没有,是否有更新 Teiid PostgreSQL 仿真的计划?

4

1 回答 1

0

或者如果没有,是否有更新 Teiid PostgreSQL 仿真的计划?

我认为这里没有完全捕捉到完整的上下文。pg 仿真的当前状态是它仅支持 bytea、integral、float、double 和 date 类型的二进制格式。驱动程序应该以文本格式发送时间/时间戳。

如果需要额外的二进制格式类型支持,则需要增强。

至于支持什么二进制格式,我们需要匹配我们正在模拟的 pg 版本的期望,目前是 8.2。如果有一个连接/会话变量来控制预期的格式,我们可以寻求支持。

上一次支持 npgsql 的努力是在两年前,所以他们的驱动程序现在很可能正在做我们没有预料到的事情。因此,您应该记录有关支持最新和最佳版本的增强功能,它可以协调任何子任务。

于 2020-01-31T14:19:00.133 回答