Oracle客户端与ODAC的区别

这很让人困惑,重新写下来对我很有帮助。

我的总结是:

Oracle只公开直接的 (Oracle Call Interface) API,因此只与支持

的应用程序相关(例如,请参阅http://www.oracle.com/technetwork/topics/winx64soft-089540.html )。OLEDB包括即时客户端,还包括大量面向微软的API (.net提供程序、ASP.Net成员资格提供程序、驱动程序、.net驱动程序、ASP.Net事务协调器),这些API涵盖了大多数应用程序场景中所需的功能。例如http://www.oracle.com/technetwork/topics/dotnet/downloads/install112021-200037.html。ODAC有两种版本:'xcopy‘版本和OUI (Oracle Universal Installer)版本(并且只有OUI版本包括SQL* #1)ODT (Oracle Developer Tools for .Net)提供了Visual Studio集成,并且通常与ODAC捆绑在一起(您可以获得一个名为ODTwithODACxxxx.zip的下载),例如http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.htmlThe Oracle.DataAccess nuget包是ODAC .net驱动程序的一个版本,因此需要现有的即时客户端安装(即使用OCI)。令人困惑的是,这一度被贴上了托管驱动程序的标签(因为它确实是,只是有一些重要的非托管本地dependencies).The Oracle.ManagedDataAccess nuget包是一个完全托管的.net驱动程序,它在‘直接’模式下工作,不需要本地即时客户端

因此,对于大多数.net用户来说,'Oracle Client‘意味着安装了OUI的ODAC Instant Client + .Net驱动程序,也可能是ODT。

对于nugets来说,值得指出的是,即使是现在(2017年1月),Oracle.ManagedDataAccess驱动程序仍然不能执行大量的stuff#2操作,因此Oracle.DataAccess + InstantClient并不是一个完全过时的选择。如果您只是使用SELECT/INSERT或普通的ADO.Net进行读写,那就没问题了。我听说EF的支持也比以前好多了。DevArt的dotConnect驱动程序是另一个(非常好的)选择。

还有一个用于Oracle即时客户端的nuget包,但我不知道它是用来做什么的。大概是Win32/.Net原生OCI应用程序,需要通过nuget的零安装即时客户端。他们两个都是。

#1SQL*Plus在运行时可能很少使用,不过如果您想要将其添加到现有的separate installer安装中,Instant Client下载页面上会列出一个ODAC。

#2例如:使用表值UDT调用oracle存储过程

最新发表

友情链接