DBLinq

 用慣了Visual Studio 2008的LINQ to SQL,突然轉到使用Oracle,還真有些不適應,念代碼之悠悠,獨傖然而涕下呀。好在現在已有不少其他工具能夠支持LINQ to Oracle,那咱麼就試着想辦法將他們和Visual Studio 2008整合起來。

        從功能到易用性上都十分強大的當推Devart公司開發的dotConnect for Oracle,該工具可以和VS 2008完美集成,對LINQ語言的解釋能力比較強,執行速度也不錯,但由於其是收費產品,需要購買使用。

        這裏想介紹的是一款免費開源工具——DbLinq2007,它支持LINQ provider for Oracle、PostgreSQL、MySQL、Ingres、SQLite、Firebird和SQL Server,支持C#3.0。可以從以下地址下載新版本:

http://code.google.com/p/dblinq2007/downloads/list

        這裏使用的版本是DbLinq-0.20.1。下載包分爲兩個,一個是DbLinq-0.20.1.zip可執行文件包,另一個是DbLinq-0.20.1-src.zip源代碼文件包。第一個壓縮包裏面有一個可執行文件DbMetal.exe,通過它可以生成可供Visual Studio 2008使用的LINQ類文件(.cs)。該程序提供兩種連接Oracle數據的方式,一種是provider=Oracle,這種方式是通過調用系統中的System.Data.OracleClient.OracleConnection類來實現數據庫的連接,另一種是provider=OracleODP,使用的則是Oracle.DataAccess.Client.OracleConnection。如果採用第二種連接方式,需要當前目錄下有Oracle.DataAccess.dll這個文件,該文件在第一個壓縮包裏面沒有,在第二個壓縮包的lib文件夾下面可以找到,將它拷貝到DbMetal.exe的目錄下就可以了。如果採用第一種連接方式,類似的,當然也可以在系統文件夾下將System.Data.OracleClient.dll拷貝到DbMetal.exe的目錄下,該文件在C:\Windows\Microsoft.NET\Framework\v2.0.50727目錄下面可以找到。不過還有一種更簡單的方式,就是修改DbMetal.exe.config文件,在provider name="Oracle"一項中,加入該DLL對應的版本信息就可以了,比如改成如下格式:

<provider name="Oracle" dbLinqSchemaLoader="DbLinq.Oracle.OracleSchemaLoader, DbLinq.Oracle" databaseConnection="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

修改之後,就可以開始執行DbMetal.exe文件了,命令格式如下:

dbmetal -provider="Oracle" -conn="Data Source=ORCL;User Id=SCOTT;Password=TIGER" -database="SCOTT" -namespace="OracleDAL" -code="OracleLinq.cs" -sprocs –schema

(該命令可在DOS命令窗口下,進入到DbLinq-0.20.1解壓目錄,然後再執行)

        順便說明一下,命令中provider指的是連接方式,如上所述,這裏表示採用第一種連接方式,conn表示Oracle數據庫的連接字符串,不用過多解釋,database表示要導出爲LINQ的表格所屬的用戶,這裏表示要導出屬於SCOTT用戶的表格,code表示想要生成的C#類文件名,其他可選參數的說明請參照DbMetal.exe的Help說明。測試所使用的數據庫的版本是Oracle 10g 10.2.0.3。

        如果不出問題的話,將會在DbLinq-0.20.1解壓目錄下生成OracleLinq.cs文件,將該文件導入到Visual Studio 2008的項目中,就可以嚮往常一樣,通過LINQ語言來讀寫Oracle數據庫了!

        最後需要說明一下,該工具對複雜LINQ語言的解釋還存在一些問題,畢竟很難做到像微軟的LINQ to SQL那樣完美,不過對於簡單應用,使用該工具還是比較方便的,如果是複雜的應用或者是對性能質量要求比較高的應用,還是建議大家採用那些收費工具或者乾脆直接寫SQL吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章