nyfor 发表于 2013-10-10 14:50:09

最新Oracle免安装.NET全托管只有3.72M (2014.10.16 Update)

本帖最后由 nyfor 于 2014-10-16 13:31 编辑

官方在一个月前又有新版本出来了. 12c Release 3 Beta 2 , 文件大小居然变成了 3.72M


之前的免安装客户端,.NET全托管, 6.22M大小 (版本12c 4.121.1.0))
============================================================================================
开发Oracle数据库应用程序,一直以来部署是一个头疼的事情,需要安装客户端,虽然Oracle也有提供XCopy部署的ODAC客户端,但是文件总体积很大.
现在Oracle已经开发出一个全托管的DLL, 仅一个DLL, 无需安装, 部署极为方便. 发布时只需要该DLL跟在Bin目录下即可.

要求.NET Framework版本为 4.0及以上

官方下载地址:
http://www.oracle.com/technetwor ... tilsoft-087491.html

原来引用 Oracle.DataAccess.dll, 现在改为引用Oracle.ManagedDataAccess.dll,
其中的命名空间由 Oracle.DataAccess.Client改为Oracle.ManagedDataAccess.Client
当使用这个全托管的DLL时, 无需安装部署,无需设置注册表,无需配置环境变量,一切皆可在 app.config(或是web.config) 文件中配置

官方文档配置说明:
http://docs.oracle.com/cd/E48297 ... Config.htm#BABEGGHD

当然不在配置文件中做任何配置也是可以的. 连接字串可以使用 EasyConnect 方式配置.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.ManagedDataAccess.Client;
using System.Data;

namespace ConsoleApplication1
{
    class Program
    {
      static void Main(string[] args)
      {
            try
            {
                string constr = "user id=scott;password=tiger;data source=//127.0.0.1/ORCL";
                OracleConnection con = new OracleConnection(constr);
                con.Open();
                OracleCommand cmd = con.CreateCommand();
                cmd.CommandText = "SELECT DEPTNO, DNAME, LOC FROM DEPT";
                IDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                  Console.WriteLine("{0} {1} {2}", dr.GetValue(0),dr.GetValue(1),dr.GetValue(2));
                }
                dr.Close();
                cmd.Dispose();
                con.Dispose();
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error : {0}", ex);
            }
      }
    }
}



再补充一下在 app.config/web.config 中配置还需要增加一个配置节<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess" />
</configSections>否则无法识别文档中的配置<oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
      ...
      ...
      </dataSources>
      <settings>
      ...
      ...
      </settings>
      <implicitRefCursor>
      ...
      ...
      </implicitRefCursor>
      <edmMappings>
      ...
      ...
      <edmMappings>
    </version>
    <version number="4.112.3.60">
      <dataSources>
      ...
      ...
      </dataSources>
      <settings>
      ...
      ...
      </settings>
      <implicitRefCursor>
      ...
      ...
      </implicitRefCursor>
      <edmMappings>
      ...
      ...
      <edmMappings>
    </version>
</oracle.manageddataaccess.client>由于我没有使用分布式事务,这里我抽取出下载包中的一个DLL,另外的一个是 DTC(大多用不到分布式事务,就不管他了)

焚寂。 发表于 2013-10-10 16:01:58

不知道这个托管客户端与之前的PInvoke版本在效率上有没有差别

polite0803 发表于 2013-10-10 22:56:55

我想知道,如果是XAF怎么连接。

nyfor 发表于 2013-10-11 09:19:14

焚寂。 发表于 2013-10-10 16:01
不知道这个托管客户端与之前的PInvoke版本在效率上有没有差别

PInvoke是什么?我还没听过呢.

nyfor 发表于 2013-10-11 09:44:34

polite0803 发表于 2013-10-10 22:56
我想知道,如果是XAF怎么连接。

XAF的话,
一是你自己去写XpoProvider, 二是建议DevExpress提供该驱动的支持.

如果你有XPO驱动的源代码,则仿照其中的 ODP.NET 的驱动部分应该很容易写出来,可能只要替换一下其中的名称空间就可以.

焚寂。 发表于 2013-10-12 19:49:29

nyfor 发表于 2013-10-11 09:19
PInvoke是什么?我还没听过呢.

托管代码调用非托管代码

amw789 发表于 2013-10-13 20:00:18

不错的东西学习一下

benny856694 发表于 2013-10-15 15:27:15

本帖最后由 benny856694 于 2013-10-15 16:03 编辑

似乎这个driver不支持oracle 9i了。

nyfor 发表于 2013-10-15 16:16:12

benny856694 发表于 2013-10-15 15:27
似乎这个driver不支持oracle 9i了。
的确,最低版本要求 10g Release 2
Oracle Data Provider for .NET, Managed Driver requires the following:

    Same Windows operating system support as ODP.NET, Unmanaged Driver.

    ODP.NET, Managed Driver is built with AnyCPU. It runs on either 32-bit or 64-bit (x64) Windows and on either 32-bit or 64-bit (x64) .NET Framework.

    Microsoft .NET Framework 4 or later

    Access to Oracle Database 10g Release 2 or later

heromyth 发表于 2013-10-19 18:06:19

如果有足够的时间,非常愿意一试的。我还是采用最早的方式访问Oracle和发布的。

pbuilder 发表于 2013-10-19 21:21:34

不错,谢谢分享

zxcvb90 发表于 2013-10-21 23:44:59

是正式版本吗不敢用在正式项目中

nyfor 发表于 2013-10-22 11:06:21

zxcvb90 发表于 2013-10-21 23:44
是正式版本吗不敢用在正式项目中
是正式版的呀,只不过只实现了非托管ODP的部分功能, 我看了下,未实现的那部分功能我都用不到.
我现在已经使用到项目中了.

salybge 发表于 2013-10-23 05:26:56

这个必须支持,自己的开发工具可以更新换代了

z954134 发表于 2013-12-14 17:32:08

这个不错,感谢分享

davidfu1974 发表于 2013-12-18 12:36:59

很有帮助奥,谢谢分享

㊣子楷㊣ 发表于 2013-12-23 18:56:35

这个必须支持!谢谢!

pcer 发表于 2014-1-2 13:16:05

下来试试,谢谢老大

yduis6554 发表于 2014-3-4 22:56:53

这个已经在用了. 反正我要用的功能.也只是增删改.够用了.

benny856694 发表于 2014-3-4 23:24:42

yduis6554 发表于 2014-3-4 22:56
这个已经在用了. 反正我要用的功能.也只是增删改.够用了.

我是通过xpo来用的,发现内存占用巨大,不知道你有这种问题吗

yduis6554 发表于 2014-3-5 09:52:31

benny856694 发表于 2014-3-4 23:24
我是通过xpo来用的,发现内存占用巨大,不知道你有这种问题吗

我没有用这个.不太清楚.

我使用的是 iBatisNET. 没发现内存使用有多大.

DanielQ 发表于 2014-3-17 22:49:47

这个必须要顶一下!

nyfor 发表于 2014-10-16 13:36:12

官方在一个月前又有新版本出来了. 12c Release 3 Beta 2 , 文件大小居然变成了 3.72M

残剑飘雪 发表于 2014-10-28 17:01:09

好东西。一定要收藏

pacocai 发表于 2015-4-3 00:13:02

看着不错…………支持。
页: [1]
查看完整版本: 最新Oracle免安装.NET全托管只有3.72M (2014.10.16 Update)