将C#连接到Oracle

将C#(.NET)应用程序连接到Oracle 10g和11g的最佳库/驱动程序是什么。
我找到的当前选项是:

  1. 数据库安装附带的Oracle客户端
  2. Oracle Instant Client(由于操作系统数量为6-8个版本,因此有点令人困惑)
  3. Microsoft ODBC? (这可以用吗?)
  4. ODP.Net – 是这个单独的产品还是包含在1.和2.?

有人可以解释一下差异吗?

我正在计划将在Oracle数据库上执行基本CRUD操作的C#应用​​程序。 哪个库/驱动程序最小且最容易安装?

编辑:
一般建议是使用ODP.Net。 现在,有人可以解释或指出回答客户端安装包之间的差异。 我为Oracle 11g找到了3个不同的客户端:

  • Oracle客户端 – 客户端驱动程序包,作为数据库安装的一部分提供
  • ODAC – Oracle数据访问组件 ,包含很多东西,其中包括ODP.Net和Oracle Instant Client
  • Oracle Instant Client还包含很多东西,包括ODP.Net

那么,哪一个足够发展? Oracle文档非常详细,但没有说明这些客户端软件包之间的差异。 我会选择最小的(即时客户端)。 这是最好的选择吗?

编辑2:
我正在使用.Net 3.5

要将C#连接到oracle,您需要.net的数据提供程序。 这可以是以下之一:

  • ODP.Net(Oracle)
  • System.Data.OracleClient(微软)
  • ODBC(Oracle)
  • OLEDB(Oracle)
  • 适用于Oracle的DataDirect ADO.NET数据提供程序(DataDirect)
  • 可能是其他一些提供者

所有这些数据提供者都需要安装oracle客户端。 jdbc14.jar没有java中的独立库。 您有2个选择部署oracle客户端:

  • 完整客户端(可能来自数据库安装)
  • 即时客户

ODP.Net,ODBC,OLEDB是完整客户端的一部分。 这是“硬”方式,因为必须在运行软件的每个客户端上运行安装过程。 这是客户端上最多兆字节的位置。
即时客户端以不同的包提供。 这是部署oracle客户端的最小方法。

我建议将ODP.Net与Oracle Instant Client一起使用 ,因为这样易于部署且重量非常轻。

您需要哪些即时客户端软件包:

  • 选择版本11.1.0.6.0(或提供ODAC的更新版本)
  • Instant Client Package – 基本(如果您需要完整的语言支持)
  • 即时客户端软件包 – ODAC

关于使用c#应用程序部署oracle即时客户端的stackoverflow上有很多文章。

编辑:更新的链接和版本

Microsoft将弃用 System.Client.OracleClient命名空间,因此我认为最好使用ODP.NET 。 确保您下载最新版本(ODP.NET 11g),因为以前的版本存在一些问题。

ODP.NET是访问Oracle数据库的最佳提供程序,主要是因为它是最本机的,它通过以下方式区别于ODBC:

  • 更好的性能
  • ODP.NET提供对高级Oraclefunction的访问,而不是通过ODBC .NET提供
  • ODP.NET不使用额外的数据访问桥。

也可以使用ODBC,但如上所述,它会更慢并且function有限。

要使ODP.NET工作,您需要此处列出的软件(包括oracle客户端): http : //www.oracle.com/technology/tech/windows/odpnet/faq.html#install

希望这可以帮助!

也许我错了,但ADO.NET已经集成了对Oracle的支持。 也许对于早期版本……

我觉得odbc太慢了。 System.Data.OracleClient也有点慢,它将被Microsoft弃用。

你可以使用devart的提供者,有一个免费版本。 它易于部署。 请参见http://www.devart.com/dotconnect/oracle/它确实支持entity framework。

Odp.net速度很快,但它不支持entity framework,因此部署起来并不容易。

我真的不能说你提供的解决方案之间的差异,但我总是使用Oracle提供的Oracle数据访问组件,它始终完美无瑕。 它可以在这里找到: ODAC for Visual Studio

可以肯定的是,Oracle在.NET Framework上开发的库比Oracle外部公司开发的库要准确得多。 例如,关于访问Oracle数据库时抛出的exception,如果Oracle开发团队已经开发了这些库,那么它们会更有用,因为他们对Oracle数据库有额外的了解。

糟糕的是,如果您选择使用.NET System.Data.OracleClient,您将有一个依赖性问题,您不必克服这个问题。

希望这可以帮助。 问候。


编辑:ODAC包包含ODP和Oracle Developer Tools

ODP.NET是访问oracle db的本机提供程序。 因此它应该更好地优化oracle db。 此外,还有oracle特性,例如REF CURSOR类型,它们不受MS ODBC支持,但受ODP.NET支持。 您也可以在www.aracle.com网站上下载ODAC,其中包括ODP.NET。