如何在 LINQPad 載入使用 Oracle ODAC for Entity Framework 開發的專案組件來執行查詢。
我在這個部落格的很多文章都會使用LINQPad來做操作說明,尤其是Entity Framework的相關文章,
例如:
「Oracle ODAC 11.2 Release 4 (11.2.0.3.0) - Includes support for Entity Framework and LINQ」
「Oracle ODAC for Entity Framework 關連資料查詢的幾種不同方式」
在文章中都主要是用LINQPad來操作以及說明,並且建議大家能夠使用LINQPad來做程式實作前的測試操作,但是很多人都反應說,他們不清楚要怎麼在LINQPad去加入已開發專案的專案組件然後使用,所以這一篇文章就來做個說明,讓大家了解如何在LINQPad中去加入已開發專案的專案組件然後進行各種的LINQ操作。
P.S.
而專案的實體資料模型的資料來源如果是使用MS SQL Server,也是同樣的操作模式,也是可以參考此篇文章的作法。
LINQPad
「LINQPad - 好用到爆炸、.NET開發人員必備的好用工具」
請參考以上的文章下載LINQPad(建議各位有預算的話就買個授權來使用,可以大大增加專案開發的效率)。
LINQPad 官網:http://www.linqpad.net/
準備好你的專案 - 以 Oracle ODAC for Entity Framework為例
沒有接觸過如何在 .NET 專案中使用 Oracle ODAC for Entity Framework的朋友,可以參考以下的幾篇文章,雖然專案的類型是 ASP.NET MVC,但加入實體資料模型(edmx) 的方式不管再ASP.NET WebForm或是WinForm都是一樣。
「ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 1」
「ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 2」
「ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 3」
「ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 4」
不過記得喔!下載Oracle ODAC(ODP.NET)時一定要下載最新版本的!
最新版本:ODAC 11.2 Release 4 (11.2.0.3.0) with Oracle Developer Tools for Visual Studio
經過上面的步驟,建立了一個 ASP.NET MVC專案,並且實體資料模型是用 Oracle ODAC for Entity Framework,
OracleNorthwind.edmx 內容:
這個時候不管你專案有沒有建立類別或是加入自己寫入的程式,都沒有關係,
重點是,你的專案在建置的時候一定要可以成功的!
而且要確認你的專案組件檔是有建立成功的,沒有建立成功是不會有專案組件檔的。
LINQPad 載入專案組件
Step.1
首先開啟LINQPad(注意你的專案與環境所使用的 .NET Framework版本,使用對應版本的 LINQPad)
Step.2
點選「Add connection」
Step.3
點選「Add connection」後會顯示一個「Choose Data Context」的視窗,請選擇下方的「Use a typed data context from your own assembly」,接著再選擇「Entity Framework」項目,最後可以在「Entity Framework」項目上Double-Click 或是於選擇Entity Framework後點擊「Next」按鍵。
Step.4
完成Step.3的Data Context選擇後最顯示「Entity Framework Custom Assembly Connection」的視窗,這裡請點選「Path to Custom Assembly」右方的「Browse」以選擇專案組件的路徑位置。
「Choose Custom Assembly」選擇專案組件檔案並點選「開啟舊檔」
Step.5
開啟專案組件檔之後會顯示另一個視窗「Choose Custom Type」,這邊是讓我們要選擇要使用專案中的那一個Data Context,因為有的專案有可能會存在兩個以上的Data Context,那大部分的專案都是跟範例專案一樣是只有一個Data Context,所以這邊當然就是選擇這唯一的一個Custom Type,
Step.6
在完成Step.5的步驟設定,回到「LINQPad Connection」視窗後,LINQPad就會解析專案組件檔的資料庫連接資訊,並於解析後在下方的「Provider」「Provider Name」「Connection String」載入資訊,
如果說你想要對資料庫連接字串做加密的動作,可以勾選「Encrypt connection string when saving」,載入資料庫的連接資訊後,我們可以點擊「Test」按鍵做資料庫的連接測試,
Step.7
上述 Step.6 的動作完成後,按下「OK」按鍵就會儲存並且在LINQPad中建立Connection,
如果覺得這個新加入的Connection不容易清楚辨識的話,可以在Connection項目上按右鍵,選擇「Rename」來重新命名,
重新命名
Step.8
完成了以上的七個步驟之後就已經完成了新增專案Connection的動作,就可以在LINQPad來做查詢了,在剛才新增加的「OracleNorthwind」Connection項目上按右鍵後點選「New Query」
在LINQPad的右方就會新增加一個使用「OracleNorthwind」Connection的Query編輯區
我們可以在這個「C# Expression」Query編輯區去下LINQ的Query Expression,輸入LINQ查詢句後,可以點選上方的綠色執行按鍵或是直接按「F5」鍵就可以執行,並於執行完成後在下方顯示結果。
在下方的Result區塊中,可以顯示多種的執行結果,除了一般的顯示查詢資料結果外,另外可以顯示:lambda語法、轉換SQL Script、IL。
顯示Lambda語法:
顯示 IL:
顯示SQL Script:
LINQPad目前的版本對於 Oracle ODAC for Entity Framework尚未完全支援,所以「SQL」這邊是無法顯示轉換的SQL指令,但是使用MS SQL Server 的實體資料模型則是可以顯示轉換後的SQL指令。
如果是使用MS SQL Server的實體資料模型的專案…
以上就是在LINQPad中載入專案組件並執行 LINQ Query Expression 的步驟。
Language 選擇使用「C# Statement」
在Query編輯區將Language改選用「C# Statement」,這樣一來就可以在編輯區中執行LINQ 以及 C#語法,最後如果要顯示資料的話,必須使用「Dump()」,不然是不會顯示整個執行的結果。
Language 選擇使用「C# Program」
上面所寫的程式不去變動然後將「Language」選項改選擇「C# Program」,會以Program的方式把程式區段給包覆起來,
或者說我們想要將某些程式區段給抽出,也可以用「C# Program」的方式來做測試,
Language 選擇使用「SQL」
Language改使用 SQL 選項,不論資料庫是使用MS SQL Server 或是 Oracle,都可以輸入 SQL Script做查詢,
Language 的選項
除了使用C#語法外,也有支援VB語法以及F#語法。
顯示關連性
如果在資料庫有設定好各個Table的關聯性,或者在EDMX中有手動設定各個Entity的關聯性,那麼在Connection中就會顯示:
而在下Query指令時也會在IntelliSence中顯示(不過這功能只有付費的版本才會有,免費版本則沒有提供)
查詢結果輸出
在 LINQPad 中也可以直接把查詢的結果輸出為檔案,支援輸出的檔案格式有:
結語:
有關LINQ載入使用Entity Framework開發的專案組件的簡單說明就到此,而LINQPad的操作當然不止於上面所說的那些而已,還有很多功能與使用方法就留待各位有興趣的人逐一發掘,希望透過本篇文章的簡單說明幫助各位去使用LINQ,並且輔助專案有使用Entity Framework開發的效率,在設計階段時,要測試LINQ 查詢句是否正確時不必在Visual Studio 去執行整個專案,只要將LINQ查詢句複製並貼上LINQPad然後再做一些些的修改後就可以馬上執行並得到結果,這樣子的開發方式既方便又快速,所以我一直都在向周遭的朋友推薦使用LINQPad,而大部分的回應都是用得相當滿意。
參考連結:
LINQPad - Using LINQPad with Entity Framework
http://www.linqpad.net/EntityFramework.aspx
LINQPad + EF Video
SCIP.be - Stefan Cruyberghs’s blog:.NET - New connection providers in LINQPad
http://www.scip.be/index.php?Page=ArticlesNET29
Simple Thoughts on Everything - Bibby:用 LinqPad 來使用 Entity Framework
http://bibby.be/2010/07/linqpad-entity-framework.html
以上
沒有留言:
張貼留言