最近在測試devart dotConnect for Oracle的LINQ to Oracle,發現應用在ASP.NET Web Site Project時,必須要完成一些部署步驟才能順利在另一台伺服器運作。我整理如下:

  1. 部署DLL
    有幾個選擇 :
    1) 在伺服器上執行dotConnect for Oracle安裝程式,選擇Minimal安裝選項。
    2) 手動從C:\Program Files\Devart\dotConnect\下將Devart.Data.dll, Devart.Data.Linq.dll, Devart.Data.Linq.Web.dll, Devart.Data.Oracle.dll, Davart.Data.Oracle.Linq.dll, Devart.Data.Oracle.Web.dll複製到目的伺服器Web Application目錄的bin下。(註冊到GAC讓多個Web Application共用亦可) [參考]
  2. IIS7 x64的特別設定
    我發現在IIS7 x64下,必須要設定Enable 32-bit Applications才能順利運作,不然會出現Can not find Oracle home錯誤。這與先前提過的Oracle Client on x64問題類似,dotConnect for Oracle有個Direct Access Mode可以甩掉Oracle Client的糾纏,不失為一了百了一勞永逸的好方法。
  3. 建立授權檔
    除了前述DLL的部署外,我們還需要一個App_Licenses.dll提供元件授權資訊,不然你會看到以下錯誤訊息:
    License not found. Please view "Licensing" topic in dotConnect for Oracle documentation for details or contact Devart technical support.
    關於授權處理,devart提供的說明文件還算詳細,同時也有方便的GUI工具可以協助產生App_Licenses.dll(見以下圖例示範說明)。



圖1-啟用授權工具

圖2-若Web Project還沒有licenses.licx檔,按下Fix就可自動產生

圖3 記得選Rebuild Application,就可自動產生App_Licenses.dll

最後將App_Licenses.dll也複製到bin下,就大功告成囉!


Comments

# by johoya

dotConnect for Oracle 的 Direct Access Mode 和 TransactionScope() 運作上是有問題的, 這個網址中他們的開發人員有提到: http://www.devart.com/forums/viewtopic.php?t=17281&highlight=transactionscope 有趣的是他們既然在 direct mode 下不支援 2-phase commit, 我先前在不知情的狀況下用它竟也沒有錯誤訊息產生, 直到某一次我發現我明明包了 TransactionScope() 卻又產生資料不一致的狀況 另外還有一例: Oracle 有預設一個 Global Transaction (即.Net 裡頭的TransactionScope()) 最大只能有 32 個 connection 加入的限制, 我的某個程式在 direct mode 下只能得到 transaction fail 之類的奇怪訊息, 在非 direct mode 下才抓到這個 excpetion 其實我還有兩次經驗是 direct mode 下抓不到「熟悉的」 ORA 錯誤訊息的經驗, 所以勸前輩不要輕易嘗試 direct mode 啊 另外這間公司的產品 bug 真算多了, 最近我花了一周的時間 review 我自己的程式有沒有哪裡寫錯了, 因為這程式在壓力測試下會越跑越慢, 結果最後竟然發現只要把手上的 5.30.62 升級到 5.60.124 這問題就不見了, 問題也不知道出在哪裡, 看 release note 也沒有這問題的相關註解, 這眼淚只能往肚子裡吞啊

# by Jeffrey

to johoya, Direct Mode不支援TransationScope是個大洞,謝謝您分享血淚經驗,我已經通報Team Member們小心這一點,向閣下的佛心致上最高敬意。 其實我先前在Survey產品時也聽說dotConnect for Oracle常有Bug,但多半對其積極修正的態度持正面看法,基於外國鄉民的口碑,在沒有其他壓倒性優勢產品的狀況下,我想還是會借重他來處理Oracle LINQ化的架構。(我還是愛LINQ to Oracle勝過EF,這部分似乎也沒有其他廠商可取代)

# by johoya

其實我也是很愛用他來搭配 EF 的啦,只是他還真的是小問題不斷,爽用之餘也用如臨深淵的心情來對待他啊

Post a comment