印象中有看過微軟未來將不再建議使用System.Data.OracleClient,昨天無意翻到正式宣告文,特別PO文整理一下。

主要考量是有很大比例的使用者,實務上用的都是夥伴廠商提供的ADO.NET Provider,一方面是配合Oracle改版的更新腳步較快,能較快用到資料庫的新功能,另一方面這些廠商都提供了不錯的軟體品質及客服支援。ADO.NET Team評估之後,認為即便繼續投注心力強化,也很難將使用者拉回ADO.NET OracleClient。(頗有"閃開! 讓專業的來"的感覺)

因此,ADO.NET Team做了一個重大決定: System.Data.OracleClient雖然還是附在.NET Framework 4.0裡,但已標注為"不建議使用"(Deprecated)。現有己採用的程式不受影響,也可以繼續使用它來開發新程式,只是編譯程式時將會顯示警告,不過並不會對程式執行造成任何妨礙。ADO.NET Team強烈建議開發人員改用其他廠商提供的ADO.NET Provider for Oracle,未來System.Data.OracleClient只會針對重大問題做修正(System.Data.OracleClient 3.5版的主流支援到2013年,延長支援到2018,System.Data.OracleClient 4.0的支援期則與.NET 4.0同),預期不會再有功能強化及改善。

順手整理一下System.Data.OracleClient的替代方案:

  1. ODP.NET from Oracle,Oracle自家的解決方案,正宗且免費! 但目前只提供基本資料存取功能,不包含Enitiy Framework支援。
  2. devart dotConnet for Oracle
  3. DataDirect ADO.NET Data Provider for Oracle
    2, 3兩項廠商產品我之前有寫過評估文章,除了基本資料存取,都支援EntityFramework。
  4. Oracle Multi-Tier .Net Provider from OPENLINK

Comments

# by Jaren

請問, 我使用ODP.NET 11.2版連接Oracle 9.2, 在VS2010上使用 Typed DataSet, 在建立TableAdapter時,非常緩慢, 甚至導致VS2010沒有反應,不知黑暗大有沒有碰過,之前用System.Data.OracleClient,沒有此問題

# by Jeffrey

to Jaren, 我沒遇過這問題,不過如果是我來追查,會設計幾個實驗來找出問題根源: 1) 確認System.Data.OracleClient使用的Oracle Client版本是否與ODP.NET 11.2同 2) ODP.NET若不使用Typed DataSet,只執行一般OradleDataAdapter是否OK? 3) 使用ODP.NET ExecuteDataReader查詢同一資料表,速度是否正常? 這樣有助於縮小問題的範圍。

Post a comment