一、概述

Oracle Data Provider for  .NET, Managed Driver:

Oracle官方的托管数据库访问组件,单DLL,Oracle.ManagedDataAccess.dll,不安装Oracle客户端,不区分32/64位, 直接引用即可。

与非托管程序为Oracle.DataAccess.dll相比,BulkCopy和CustomType之类的都是不支持的:

下载地址

官方下载地址:

http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html  (当前下版本为64-bit ODAC 12.2c Release 1 (12.2.0.1.0))

nuget:

https://www.nuget.org/packages/Oracle.ManagedDataAccess/ (当前下版本为19.3.1)

https://www.nuget.org/packages/Oracle.ManagedDataAccess.EntityFramework/ (当前下版本为19.3.0)

下载好后  从这个目录下 odp.net\managed\common  拿出2最关键的dll

Oracle.ManagedDataAccess.dll 和 Oracle.ManagedDataAccess.EntityFramework.dll 

注意:如果需要Entity Framework 设计时特性和其他如TableAdapter向导Visual Studio设计器,可以从https://otn.oracle.com/dotnet下载32位的“Oracle Developer Tools for Visual Studio” 。

此NuGet下载不支持设计时工具;它只提供运行时支持。这个版本的ODP.NET支持Oracle数据库版本11.2或更高版本。

二、使用

1、无配置文件,直接连接DB

无SQL*Net 配置文件tnsnames.ora

string conString = "User Id=hr; password=hr;Data Source=localhost:1521/orcl; Pooling=false;";

2、使用配置文件方式:

1、使用 tnsnames.ora文件,此放置在应用程序同目录:

tnsnames.ora内容:

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

2、使用  App\web.config配置文件定义别名(无tnsnames.ora文件)

<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="orcl" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME = orcl)))"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>

3、使用 TNS_ADMIN目录:

<oracle.manageddataaccess.client>
<version number="*">
<settings>
<setting name="TNS_ADMIN" value="C:\app\oracle\product\12.1.0\client_1\Network\Admin\"/>
</settings>
</version>
</oracle.manageddataaccess.client>

使用

string conString = "User Id=hr; password=hr; Data Source=orcl;Pooling=false; ";

OracleConnection con = new OracleConnection();
con.ConnectionString = conString;
con.Open(); OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "select first_name from employees where department_id = 60"; OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
string conString = "User Id=hr; password=hr; Data Source=orcl;Pooling=false; "; OracleConnection con = new OracleConnection();
con.ConnectionString = conString;
con.Open(); OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "select first_name from employees where department_id = 60"; OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("Employee Name: " + reader.GetString(0));
}
Console.WriteLine("Employee Name: " + reader.GetString(0));
}

3、 完整的app/web.config 文件:

<configuration>
<configSections>
<section name="oracle.manageddataaccess.client"
type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</configSections>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.122.19.1"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource"
descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
</configuration>

最新文章

  1. Linux-磁盘管理小结
  2. bind 方法实现
  3. WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
  4. 浅谈Android五大布局——LinearLayout、FrameLayout、AbsoulteLayout、RelativeLayout和TableLayout
  5. springsecurity4+springboot 实现remember-me 发现springsecurity 的BUG
  6. javascript学习代码--点击按钮显示内容
  7. Windows下更改MySQL数据库的存储位置
  8. LINUX增加并管理用户
  9. spring mvc:属性无法自动注入
  10. nohup—后端守护进程
  11. JavaScript 模块化历程
  12. sql server 生成数据库字典 sql语句
  13. Swoole 理解manager进程和worker进程的启动顺序,以及演示如何停止或者重启服务端。
  14. B树/[oracle]connect BY语句
  15. kuangbin 基础DP集合
  16. Zookeeper系列六:服务器角色、序列化与通信协议、数据存储、zookeeper总结
  17. isinstance与type的区别
  18. 解决Ubuntu 16.04下提示boot分区空间不足的办法
  19. (译)我为什么用Go语言来做区块链——Syed Jafar Naqvi——Co-Founder/CEO at Karachain
  20. ehcache 的 配置文件: ehcache.xml的认识

热门文章

  1. PAT(B) 1035 插入与归并(Java)
  2. openstack-nova源码之创建虚拟机
  3. SpringBoot指定额外需要扫描的包
  4. RequestBody只能读取一次的问题
  5. WPF 的 Application.Current.Dispatcher 中,为什么 Current 可能为 null
  6. 【转载】Asp.net网站安全:去除网站根目录下的备份文件防止代码泄露
  7. CPU子系统
  8. Hadoop常用命令及范例
  9. go语言实现限流器
  10. [服务器]SSL安装证书教程