我一直在寻找新的 oracle 托管驱动程序函数,因为我发现 oracle 中的用户定义类型不支持很多东西(OracleArrayMappingAttribute
IOracleArrayTypeFactory 等...),有没有办法在托管驱动程序中支持 udt 类型
https://docs.oracle.com/database/121/ODPNT/intro004.htm#ODPNT8146
谢谢
我一直在寻找新的 oracle 托管驱动程序函数,因为我发现 oracle 中的用户定义类型不支持很多东西(OracleArrayMappingAttribute
IOracleArrayTypeFactory 等...),有没有办法在托管驱动程序中支持 udt 类型
https://docs.oracle.com/database/121/ODPNT/intro004.htm#ODPNT8146
谢谢
你是对的 - 截至今天(6/5/18)ODP.NET 托管驱动程序不支持 UDT。我建议使用 PL/SQL 存储过程将 UDT 转换为 ODP.NET 可以处理的一种或多种类型。此外,重新评估您对 UDT 的使用。它们对性能有负面影响,除非您被迫(通过使用它们的 Oracle PL/SQL 包(例如 Oracle Spatial)或其他无法包装在另一个 SP 中的包),否则我不会推荐它们的使用。
或者,您可以查看是否可以使用 ODP.NET 非托管驱动程序,但我知道这可能是不可接受的。
三年后,针对 .NET 和 .NET Core 的托管驱动程序的 UDT 支持出现了:
和
21.3 版本包括 UDT 支持,您可以在博客文章中找到更多详细信息,例如如何迁移现有项目或示例代码:宣布 ODP.NET 21.3 — 托管 ODP.NET 和 ODP.NET Core 的用户定义类型
它刚刚发布,我将尝试一下,所以请不要指望我回答更多问题:D。您可能想访问GitHub 线程以加入讨论。