.net的替代Oracle驱动程序

我必须在C#中开发一个工具,从Oracle DB中检索一些数据。 由于我们的IT支持在安装Oracle客户端时遇到一些问题,我希望能够在没有安装客户端的情况下连接到数据库。 我们的想法是与应用程序一起安装(并可能注册)一个额外的库。

Oracle客户端存在哪些替代方案,它们的优缺点是什么?

这适用于一个小应用程序(1个表单,2个或3个查询,结果显示在DataGrid中,可能不超过10-20个数据集),但我也对可伸缩性问题感兴趣,因为我们也可能会离开Oracle客户拥有更大的未来项目。

当然,免费软件解决方案会很好,但我们不仅限于此。

Oracle ODP.Net驱动程序有几种不同的风格。 你想用哪个版本?

听起来您希望Oracle 11g ODAC 11.1.0.6.21具有Xcopy部署,它允许您通过复制几个DLL并注册它们来部署Oracle Instant Client和ODP.Net驱动程序。 这不需要完整的Oracle客户端安装。

您的任务无需任何第三方软件即可实现:

  1. 在开发框中安装Oracle Data Access Components 11g 。 ODAC 11g向后兼容9i和10g
  2. 在.NET项目中添加对ODAC库的引用(Oracle.DataAccess.dll)。
  3. 允许您的应用程序在不使用TNSNAMES.ORA的情况下进行连接。 为此,您必须在连接字符串中包含连接描述符:

    “user id = scott; password = tiger; data source =”+“(DESCRIPTION =(ADDRESS =(PROTOCOL = tcp)”+“(HOST = sales-server)(PORT = 1521))(CONNECT_DATA =”+“( SERVICE_NAME = sales.us.acme.com)))”

由于您在连接字符串中包含连接描述符,因此目标计算机中不需要瘦客户端。

快乐部署。

Oracle目前有一个完全托管的ODP.NET版本,允许开发人员连接到Oracle数据库,同时只引用一个DLL。 这里有更多信息。

目前的版本可以在这里找到。

企业库客户端System.Data.OracleClient是Oracle的ODP.NET提供程序的可行替代方案。 您应该知道有一些警告,使用Microsoft客户端将使得处理任何类型的大型对象变得非常困难,无论它们是XML字符串,CLOB,LOB还是BLOB。 此外,不支持Oracle XmlType列,必须将其转换为要返回到OracleClient的CLOB。