我的应用程序使用使用 DataReaders 在 ADO.NET 中编写的自定义数据访问层与 Oracle 和 SQL Server 数据库进行交互。现在,我在 GUID(我们用作主键)和 Oracle RAW 数据类型之间的转换时遇到问题。插入到 oracle 中是没问题的(我只使用 System.Guid 上的 ToByteArray() 方法)。问题是当我从数据库加载记录时转换回 System.Guid。目前,我使用从 ADO.NET 获取的字节数组传递到 System.Guid 的构造函数中。这似乎有效,但数据库中出现的指南与我以这种方式生成的指南不对应。
我无法更改数据库架构或查询(因为它被重复用于 SQL Server)。我需要代码将 Oracle 中的字节数组转换为正确的 Guid。
事实证明问题出在你输入的字节顺序上Guid.ToByteArray()
而不是甲骨文本身。如果您采取指南“11223344-5566-7788-9900-aabbccddeeff
”并打电话ToByteArray()
就这样,你得到“44332211665588779900AABBCCDDEEFF
如果您随后将该字节数组传递回 Guid 的构造函数,您将获得原始的 Guid。我的错误是尝试通过原始 Guid 格式(删除破折号)而不是查询 Oracle 数据库的结果ToByteArray()
call.
我仍然不知道为什么字节是这样排序的,但它显然与 Oracle 无关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)