<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .NET Oracle Developer的福音——ODP.NET Managed正式推出

        在.NET平臺下開發Oracle應用的小伙伴們肯定都知道一方面做Oracle開發和實施相比SqlServer要安裝Oracle客戶端(XCopy、自己提取相關文件也有一定復雜性),另一方面相比JAVA平臺不如JDBC方便快捷,特別是一些剛接觸Oracle的小伙伴,面臨配置tns.ora、OraHome等等多少有些畏難情緒。

      初始廬山

        現在,這一切都即將成為過去啦。繼早些時候Oracle官方推出的ODP.NET Managed的Beta版之后,最近的版本已經跟隨12c一起發布了,可以在此下載。對應的12c文檔粗看一下,下載了64bit的版本,下載完成后文件不多。

      image

        一個readme.htm中只寥寥數語,熟悉的network文件夾相當于與一個tnsnames和sqlnet的模板,managed里也提供里一個文檔,里面描述也很少,主要介紹一些配置和BUG情況,核心就在common里面的Oracle.ManagedDataAccess.dll這個文件了,Oracle.ManagedDataAccess.Client.Configuration.Section.xsd這個文件一看就知道是提供給vs的xml編輯器提供智能提示的,接著里面還區分了X64和X86的文件夾,一方便主要是分布式事務的Oracle.ManagedDataAccessDTC.dll不同,另一個就是bat文件里相關命令不同了。

      image

      如果你對之前的ODP.NET的OraProvCfg已經比較熟悉的話,那么configure.bat里面的內容就很好理解了,這個批處理一共干了這么幾件事情,其中2、4、5其實并不是必須的:

      1、將驅動對應db factory注冊以及添加configuration處理器,其實就是在machine.config里增加<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />和<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.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />,這樣在接下來的開發和部署中才能識別Oracle.ManagedDataAccess.Client的驅動以及oracle.manageddataaccess.client的配置節點(其實如果在單獨的程序配置也是可以的,需要注意的是是否使用gac)

      2、添加ODP.NET Managed的性能計數器(Performance Counter)

      3、將Oracle.ManagedDataAccess.dll添加到GAC中

      4、提供在VS開發環境下配置節點的智能提示,其實就是將之前提到的Oracle.ManagedDataAccess.Client.Configuration.Section.xsd拷貝到VS對應目錄下

      5、添加日志記錄

      6、添加VS開發環境對Oracle.ManagedDataAccess.dll引用的支持

      image

       

      牛刀小試

        VS新建一個項目,引用Oracle.ManagedDataAccess.dll,開始隨意碼幾行爛熟的入門級代碼…,可以看到,正如Orale自己描述的,跟以前的API差別很小,所不同的就是命名空間換成了using Oracle.ManagedDataAccess.Client;

         1:              OracleConnection con = new OracleConnection();
         2:              con.ConnectionString = "user id=his3;password=his3;data source=192.168.1.237/ORCL";
         3:              con.Open();
         4:   
         5:              OracleCommand cmd = new OracleCommand();
         6:              cmd.CommandType = System.Data.CommandType.Text;
         7:              cmd.CommandText = "select * from gy_yonghuxx";
         8:              cmd.Connection = con;
         9:   
        10:              OracleDataAdapter da = new OracleDataAdapter();
        11:              da.SelectCommand = cmd;
        12:              DataSet ds = new DataSet();
        13:              da.Fill(ds);
        14:   
        15:              con.Close();
        16:              da.Dispose();
        17:              cmd.Dispose();
        18:              con.Dispose();

       

        眼力好的伙伴肯定能馬上發現ConnectionString的特殊之處,字符連接串有三種方式 :

        a、tns alias:"user id=scott;password=tiger;data source=sales";在此具體的對應tns文件是可以在config文件中指定,比如我的machine.config給我默認了一個<setting name="tns_admin" value="d:\installsoft\oracle\odp.net_managed121010\odp.net\managed\x64\..\..\..\network\admin" />

        b、Connect Descriptor:該種方式就是將tns配置的一段拿出來寫進去,相比c的有點在于可配置項全面

        "user id=scott;password=tiger;data source=" + 
           "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)" + 
           "(HOST=sales-server)(PORT=1521))(CONNECT_DATA="+
           "(SERVICE_NAME=sales.us.acme.com)))"
       c、Easy Connect Naming Method:PROTOCOL等一些選項好像就沒地方配置了
        "user id=scott;password=tiger;data source=//sales-server:1521/sales.us.acme.com"
       

      Entity Framework重構

         對于已經開始或準備使用Entity Framework的項目(目前版本還不支持Code First),如果熟悉ADO.NET替換起來其實也很簡單,共有三點需要注意
       1、配置文件里的連接字符串中provider=Oracle.DataAccess.Client;替換為provider=Oracle.ManagedDataAccess.Client;provider
       2、對應實體文件edmx中的Provider="Oracle.DataAccess.Client"也替換為Provider="Oracle.ManagedDataAccess.Client"
       3、如果對數據類型映射做過配置(Oracle默認的類型映射有點坑爹),需要將下圖紅線下面的加上去
      image 

      一探究竟

          性能測試我想正式版發布前Oracle官方肯定做過的,自己做測試對比畢竟不夠專業,但粗略看下內部實現多少能看出端倪的,如果看過以前Oracle驅動的dll(Mircrosoft、Oracle、Devert提供的dll)肯定知道以前都是依賴于oci.dll這個接口,調用的最終實現是通過P\Invoke。下圖是順著OracleConnect.Open最后跟蹤到的OracleCommunication的類,在此已經出現了soket、socketStream等對象,可見這次的托管版本托管的還是比較徹底的,個人覺得在性能上應該會比P\Invoke來的高效。

      image

      posted @ 2013-10-22 14:38  小胖2010  閱讀(23871)  評論(46)    收藏  舉報
      主站蜘蛛池模板: 亚洲一区二区三区自拍偷拍| 黑森林福利视频导航| 热久在线免费观看视频| 国产精品一码二码三码四码| 欧美激情一区二区三区成人 | 精品人妻午夜福利一区二区| 久久精品国产国产精品四凭| 国产精品久久久久久久久久| 蜜臀一区二区三区精品免费| 最新亚洲av日韩av二区| 日韩精品 在线 国产 丝袜| 欧美丰满熟妇xxxx性| 国产偷自视频区视频| 又色又污又爽又黄的网站| 中文字幕成熟丰满人妻| 日日猛噜噜狠狠扒开双腿小说| 国产成人亚洲精品成人区| 熟妇人妻av中文字幕老熟妇| 亚洲精品一区二区区别| 色综合久久中文综合久久激情| 色噜噜亚洲男人的天堂| 无码人妻精品丰满熟妇区| 国产成年女人特黄特色大片免费| 亚洲美免无码中文字幕在线| 国产成人精品电影在线观看| 国产免费午夜福利在线观看| 午夜国产理论大片高清| 极品少妇xxxx| 亚洲精品综合久中文字幕| 亚欧洲乱码视频在线观看| 亚洲精品中文字幕二区| 亚洲综合国产伊人五月婷| 久久精品国产亚洲av天海翼| 豆国产97在线 | 亚洲| 中文字幕久久六月色综合| 国产午精品午夜福利757视频播放 国产午夜亚洲精品国产成人 | 精品国产亚洲区久久露脸| 狠狠人妻久久久久久综合九色 | 国产一区二区三区韩国| 午夜视频免费试看| 91亚洲国产成人精品福利|