将 hstore 列转换为 XPO class 属性 Npgsql 3.2.7

Convert hstore column to a XPO class property Npgsql 3.2.7

我们已将 Npgsql 从 2.2.5 升级到 3.2.7。

我们有一个 hstore 类型的数据库列。

在 2.2.5 中 此列过去由 XPO 值转换器转换 来自来自数据库的字符串 到我们在 XPO class.

中想要的 List < Tuple< object, object>>

在 3.2.7 之前有一些变化 当我们尝试阅读本专栏时, 我们收到一条错误消息,指出 "an object should implement IConvertible"。 但它没有说明哪个对象应该是 IConvertible。 我推测这是目标 XPO 属性, 类型列表<元组<对象,对象>>

我们尝试将 属性 更改为 IConvertible 但没有效果。

有没有人对 hstore 类型和 3.* 升级有类似的问题?

我不知道你的应用程序到底做了什么(或者 XPO 是如何工作的),但是 Npgsql 3.x returns PostgreSQL hstore as Dictionary<string,string>。看起来您的客户端代码(XPO?)可能期望 Npgsql 返回的值是 IConvertible,但现在不再是这种情况了。

好的,我明白了。从数据库中读取的类型从字符串更改为字典导致 XPO 中的错误无法正确处理。以防其他人遇到此问题:需要子类化 PostgreSqlConnectionProvider 并覆盖 ReformatReadVaue() 方法以省略 Dictionary。第二件事是 属性 的适当值转换器。 https://www.devexpress.com/Support/Center/Question/Details/T614674/problem-with-hstore-fields-after-upgrading-from-16-2-to-17-2

再次感谢您为我指明了正确的方向。