首页 新闻 会员 周边

odp.net问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-08-24 16:23

之前项目是用微软企业库4.0开发的,现在考虑到性能问题想以后改用odp.net。但是之前完成的部分的不能动。

问题是这样的:单独做了odp.net测试没问题,但如果放到之前的项目中就出现之前做的没问题,但是用odp.net做的就连不上了

望高手指教

小也的主页 小也 | 初学一级 | 园豆:75
提问于:2012-08-16 14:41
< >
分享
最佳答案
0

Oracle 的驱动应该有一个安装程序,需要单独安装,并不需要将所有的文件都复制到你的目录下面。

你在使用企业库的时候,默认使用的应该是微软的  Oracle 驱动, 命名空间为  System.Data.OracleClient,使用 ODP 的话,应该是另外一个命名空间。

我考虑,你可以将企业库的配置检查一下,让企业库也使用 ODP 的程序集,在企业库的配置中应该可以的。

你检查一下。

收获园豆:8
冠军 | 小虾三级 |园豆:886 | 2012-08-21 23:10
其他回答(1)
0

连不上报什么错?单独测试和放到之前的项目中的运行时环境一样吗?

你的ODP.NET是Oracle宣布的全托管的代码实现吗?

收获园豆:2
Launcher | 园豆:45045 (高人七级) | 2012-08-16 14:47

单独测试只有ODP.NET,之前的项目中包含微软企业库,只有这点不一样

支持(0) 反对(0) 小也 | 园豆:75 (初学一级) | 2012-08-16 15:08

单独测试只有ODP.NET,之前的项目中包含微软企业库,只有这点不一样。

“ODP.NET是Oracle宣布的全托管的代码实现”这个我从哪里可以知道啊?

支持(0) 反对(0) 小也 | 园豆:75 (初学一级) | 2012-08-16 15:09

@小也: 不知道是否有更相似的异常堆栈信息〉?

Oracle.DataAccess.Client.OracleBulkCopy,你用 reflector 或者 ILSpy_Master 查看下该类需要设置哪些初始值。

之前的ODP.NET依赖Oracle Client组件,去年年底还是今年年初Oracle发了封邮件,宣布将发布完全采用托管代码的ODP.NET。所以你得去Oracle网站上看看。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2012-08-16 15:19

@Launcher: 下面是通过reflector反编译出来的OracleBulkCopy方法,我觉得应该跟访问数据库驱动有关系。这么说吧,一个项目可以有两个同时存在的访问数据库驱动吗?如何让微软企业库跟Oracle.DataAccess.dll同时存在并使用呢?

public OracleBulkCopy(string connectionString)
        {
            this.COL_HEADER_SIZE = COL_NULLIND_SIZE + COL_LEN_SIZE;
            this.SIZE_OF_CHAR = 2;
            this.SIZE_OF_PTR = sizeof(IntPtr);
            if (connectionString == null)
            {
                throw new ArgumentNullException("connectionString");
            }
            if (connectionString == string.Empty)
            {
                throw new ArgumentException(OpoErrResManager.GetErrorMesg(ErrRes.ODP_INVALID_VALUE, new string[] { "connectionString" }));
            }
            this.m_connection = new OracleConnection(connectionString);
            this.m_ownConnection = true;
            this.m_timeout = 30;
            this.m_bulkCopyOptions = OracleBulkCopyOptions.Default;
        }

支持(0) 反对(0) 小也 | 园豆:75 (初学一级) | 2012-08-17 11:03

@小也: 类型初始值异常,一般是类的静态变量的设置引发,不是由构造函数引发的。可以有多个访问书库的驱动,DbConnectionFactory 会根据不同的 Provider 来创建,不会引起冲突。你可以看一下你的连接字符串是否正确,可以尝试使用简单的 OracleConnection和OracleCommand 来执行一次简单的数据库查询任务来确定引发异常的原因是不是OracleBulkCopy特有的。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2012-08-17 11:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册