Oracle Data Provider for .NET的使用(二)-驱动更换与注意事项
上篇说过了ODP的安装与配置 ,但是个人比较喜欢托管类型的,毕竟非托管类型的,因为考虑到会有用户或者是服务器或者是开发人员有32位的机器,就要强制编译平台平台为32位,只因为这个驱动,有点让人不愉快了。所以,下面主要先讲如果使用托管的驱动,非托管的,看时间吧,我估计除了重量及的ODAC,没人会选择使用非托管的代码,甚至我现在用托管的代码也都不安装,直接那个DLL,然后在CONFIG中配置一下。
那么如何从非托管驱动向托管驱动迁移呢?这个我们先来说一下。
为了方便地迁移,ODP.NET的程序接口不论是否托管,都是相同的,所以,不管你的非托管驱动用了多久,这条路你走了多远,都可以立马向托管驱动切换,而且还很简单。
在过去的版本中,托管驱动比非托管的支持更多的API,但是,现在它们俩都现实了支持最新数据库和.NET框架的特性。
驱动迁移有如下的步骤:
1、将Oracle.ManagedDataAccess.dll引用添加到.NET项目中。
2、将项目中非托管代码的引用改为托管代码的引用,即
using Oracle.DataAccess.Client;
或者
using System.Data.OracleClient;
改为:
using Oracle.ManagedDataAccess.Client;
3、一些在config文件中关于Provider的设置需要进行修改,因为ODP.NET的托管驱动支持较少的windows注册设置,而且有着稍微不一样的.NET配置格式。具体的请看上一篇中,对于ODP的配置介绍。
ODP.NET编程的重要事项
不可以使用Thread.Abort方法,否则非托管的资源有可能会不被释放,从而导致内存泄露和数据损坏。
如果想要更有效的使用资源,ODP.NET的对象(如OracleConnection、OracleCommand)需要及时的被关闭(closed)或释放(disposed),也可以两个操作都执行。这个操作应该在有机会的时候立即执行而不是依赖于.NET自己的垃圾收集(GC)清理资源的时候来处理。许多用户发现,在高并发的情况下,及时的关闭与释放ODP对象,可以十分有效的降低ODP对系统资源的使用。
当遇到由于内存损坏而出现的异常(如:AccessViolationException,Runtime.InteropServices.SEHException)时请勿让程序继续执行,注意是整个应用程序应该停止。
如果注册表HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANG的值设置为NA,那么ODP.NET会遇到ORA-12705的错误,删除掉这个对象即可解决问题。
Oracle Data Provider for .NET的使用(二)-驱动更换与注意事项的更多相关文章
- Oracle Data Provider for .NET 的使用经验
原文:Oracle Data Provider for .NET 的使用经验 Oracle Data Provider for .NET 是Oracle提供的基于Ado.net接口的一个开发包. ...
- Oracle Data Provider for .NET now on NuGet
Oracle Data Provider for .NET now on NuGet 时间 2015-03-02 22:30:00 Oracle Bloggers原文 http://cshay.b ...
- Oracle Data Provider for .NET Support for Microsoft .NET Core
Oracle Data Provider for .NET Support for Microsoft .NET Core的官方地址,记录下来,按照官方描述,会在2017年底左右发布,暂时还没有看到相 ...
- Oracle Data Provider for .NET的使用(托管与非托管(一))
目录 简单的概述 简单的使用 非托管系统要求 托管驱动系统要求 其它的注意事项 ODP.NET版本说明 安装ODP.NET 安装非托管驱动 非托管驱动绿色配置 简单的概述 ODP.NET的含义是 Or ...
- 通过NuGet安装和配置ODP.NET(Oracle Data Provider for .NET)
前言 本文涉及ODP.NET.ODP.NET的托管(managed)驱动.Entity Framework的托管驱动 这三部分的下载.安装.配置. 1.简介 NuGet 是.NET的软件开发包管理工具 ...
- Oracle Data Provider for .NET的使用(三)-ORACLE与.NET类型对应关系
想来这个是最重要的事情了,因为多数情况下,我们使用dbhelper来调用数据库的时候,是因为如下三个地方导致错误: 1.错误的sql语句:末尾多了分号,少了部分关键字 2.sql中的参数与parame ...
- Oracle Data Provider for .NET
官方地址: http://www.oracle.com/technetwork/topics/dotnet/index-085163.html 终于有正式版了.不用装客户端,又小,确实好.
- Oracle Data Provider for .Net classes文档
官方文档详见:https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/odpnt/odp-dot-n ...
- Oracle Data Provider for .NET – Microsoft .NET Core and Entity Framework Core
http://www.oracle.com/technetwork/topics/dotnet/tech-info/odpnet-dotnet-ef-core-sod-4395108.pdf Orac ...
随机推荐
- linux-网络监控命令-netstat进阶
2.网络连接状态详解共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的.1).LISTEN:首先服务端需要打开一个socket进行监听,状态为LIST ...
- 利用.net4.0的dynamic特性制造的超级简单的微信SDK
1.基础支持API /*-------------------------------------------------------------------------- * BasicAPI.cs ...
- 为docker创建ubuntu带SSH的基础镜像
安装Debootstrap ubuntu操作系统:apt install debootstrap centos操作系统:yum install debootstrap 构建基础Ubuntu的rootf ...
- MySQL不能启动 Can't start server : Bind on unix socket: Permission denied
转载博客地址:http://www.linuxidc.com/Linux/2010-04/25709.htm MySQL服务器突然不能启动,查看最后的启动日志如下: 080825 09:38:04 m ...
- 安装docker-compose的两种方式
这里简单介绍下两种安装docker-compose的方式,第一种方式相对简单,但是由于网络问题,常常安装不上,并且经常会断开,第二种方式略微麻烦,但是安装过程比较稳定 方法一: # curl -L h ...
- TCP/IP协议组随笔
原文:https://my.oschina.net/xianggao/blog/654677 IP层负责网络主机的定位,数据传输的路由,由IP地址可以唯一的确定Internet上的一台主机. TCP层 ...
- Apache环境下搭建KodExplorer网盘
Apache环境下搭建KodExplorer网盘 环境说明: 系统版本 CentOS 6.9 x86_64 软件版本 yum安装httpd和php kodexplorer4.25 1 ...
- 启动sping的时候可以使用system.in.read()暂停
启动sping的时候可以使用system.in.read()暂停 只要不输入就可以不会停了:
- RFS 理解
1.背景 网卡接收一个数据包的情况下,会经过三个阶段: - 网卡产生硬件中断通知CPU有包到达 - 通过软中断处理此数据包 - 在用户态程序处理此数据包 在SMP体系下,这三个阶段有可能在3个 ...
- CMake 按照文件目录组织VS工程的筛选器
macro(group_src_by_dir src_files) foreach(file_path ${${src_files}}) relative_path ${file_path}) str ...