我被困在如何写一个自定义的c#类,以便从oracle数据库中提取和更新/插入sdo_geometry类型(这是oracle的用户定义类型,也是.net的自定义类型)沿着其他非utd字段的值。
我在Google上搜索了很多,最后得到了一个在Oracle.DataAccess.dll(www.example.com非托管驱动程序)内部使用的类型的帮助下编写的自定义代码odp.net。
虽然我已经被指示使用odp.net的托管版本(使用Oracle.ManagedDataAccess.dll)编写相同的自定义代码,但当我查看此dll时,我找不到Oracle.DataAccess.dll中定义的一些类和接口,因此我无法利用现成的代码,而且我还被告知使用www.example.com托管版本编写的代码很容易部署odp.net。d驱动程序比较的odp.net非托管驱动程序。
甚至我尝试使用Visual Studio内部的自定义类代码生成器,但它没有给予我任何c#自定义类,而是在完成过程中卡住并抛出错误。
如有任何建议,我们将不胜感激。
3条答案
按热度按时间9o685dep1#
也许这就是你所需要的:https://github.com/mapspiral/NetSdoGeometry/?我目前正在使用该包从oracle 11.2中检索SDO_GEOMETRY,并将其Map到“.net-domain”,工作起来很有魅力。
wvyml7n52#
根据Oracle产品开发团队的这篇文章,我认为您目前还不能将UDT与托管驱动程序一起使用。但是,您可以通过 Package 函数/procs/packages在不使用UDT的情况下成功地将其序列化。
Migration Guide for ODP.NET Managed Driver Oracle.ManagedDataAccess (from Unmanaged Driver - Oracle.DataAccess)
Alex_Keh - Oracle产品经理,2014年3月31日上午11:11(回复kiquenet)
托管ODP.NET还不支持UDT和VARRAY。
对于支持的功能,迁移应该像更改命名空间引用和更改托管ODP.NET查找 *.ora配置文件的方式一样简单。
n3ipq98p3#
最后,Oracle使使用他们的具有UDT的托管驱动程序成为可能。我已经做了一个修改后的NetSdoGeometry版本,并将其放在Github上。
https://github.com/flappah/ManagedNetSdoGeometry