我们的 .NET 应用程序使用带有 SDO_GEOMETRY 的 ODP.NET,它是用于空间功能的 UDT。目前只有 Oracle 非托管驱动程序支持在 ODP.NET 中使用 UDT。虽然看起来UDT 支持肯定在 ODP.NET 团队的雷达上。
我想知道是否有基于 byte[] 等的手动方式来转换进出 UDT。我在上面发布的链接中知道人们正在使用 WKT 作为解决方法,但我们也会愿意接受为 C# SDO Geometry、SDO_Point 等编写我们自己的适配器的想法,这些适配器具有类似的东西ToBytes()
并且FromBytes()
是否可以在查询中使用。
是否可以将 SHAPE 属性转换为 BLOB,然后编写一些 C# 来反序列化它?也许您必须编写自己的 PL/SQL 函数来将 BLOBS 转换为 SDO_Geometry?
由于托管驱动程序的便利性,我们希望能够使用它,因此我们不必针对多个版本的非托管驱动程序进行编译,也不必在具有不同非托管客户端配置的客户端环境中工作。
最后的后备方案是选择一个版本的 Oracle 客户端,只要求客户安装该版本的非托管客户端,但他们需要注意多个并行安装(PATH , GAC, machine.config 等)