我们已经将Npgsql从2.2.5升级到3.2.7。
我们有一个hstore类型的数据库列。
在2.2.5中,这个列过去是由XPO从来自数据库的字符串转换为List < Tuple<对象,object>>是我们在XPO类中想要的。
在3.2.7之前,发生了一些变化,当我们试图阅读本专栏时,我们会得到一个错误,说明“一个对象应该实现IConvertible”。但是它没有声明哪个对象应该是IConvertible。我假定这是List< Tuple<对象object>>类型的目标XPO属性。
我们试图将该属性更改为IConvertible,但没有生效。
有没有人在hstore类型和3.*升级方面有类似的问题?
发布于 2018-03-09 23:16:49
我不知道您的应用程序到底做了什么(或者XPO是如何工作的),但是Npgsql 3.x将PostgreSQL hstore返回为Dictionary<string,string>。似乎您的客户端代码(XPO?)可能期望Npgsql返回的值是IConvertible,这不再是这种情况了。
发布于 2018-03-15 14:45:18
好的,我知道了。将从数据库读取的类型从string更改为Dictionary,会导致XPO中出现错误,而XPO没有正确处理它。万一其他人遇到了这个问题:需要子类PostgreSqlConnectionProvider并覆盖ReformatReadVaue()方法以省略字典。第二件事是为属性设置一个合适的值转换器。https://www.devexpress.com/Support/Center/Question/Details/T614674/problem-with-hstore-fields-after-upgrading-from-16-2-to-17-2
再次感谢你为我指出正确的方向。
https://stackoverflow.com/questions/49198961
复制相似问题