2013年3月28日 星期四

LINQPad - IQ Driver - for MySQL, SQLite, Oracle

LINQPad 相當好用,我已經用了很多篇文章來說明 LINQPad 的使用,一般使用 MS SQL 或 MS SQL Express 的開發人員通常在 LINQPad 裡是比較不會感覺到不便,一旦當你開發的專案是使用非 MS SQL 的資料庫時,通常在開發機裡有安裝了相對應的 Data Provider 之後就不會有無法在 LINQPad 裡使用的問題,但如果再一台沒有安裝相對應 Data Provider 的時候,就無法在 LINQPad 裡去對這些資料庫進行 LINQ 查詢操作了。

不過這個問題之前就有了解決的方式,可以讓我們不必安裝相對應的 Data Provider 的情況下還是可以在 LINQPad 裡進行查詢操作。

 


先看看在一個已經有安裝 Oracle Data Provider 的環境裡在 LINQPad 中對 Oracle 進行查詢操作,

可以正常添加 Oracle Connection

SNAGHTML11c786f

正常執行 LINQ 查詢操作

SNAGHTML114e90c

非 MS SQL 的資料庫是無法看到 EF 所轉換的 SQL 內容,

SNAGHTML11620ce

至於怎麼看非 MS SQL 的 LINQ 操作所轉換的  SQL Command,在之前的文章有做過交代,「Oracle for Entity Framework - LIKE 的查詢操作方式」。

 

上面的情況是在有安裝 Oracle Data Provider 的環境下,而接著再來看看在一個沒有安裝 Oracle Data Provider 的環境下會有什麼樣的狀況,

在下圖中有看到我們已經選定 Web 專案的 DLL,但因為環境沒有安裝 Oracle Data Provider 而無法正常帶出 Connection String 內容,

image

這個時候就需要在機器中馬上安裝 Oracle Data Provider 或  Oracle Client,才能夠讓 LINQPad 對 Oracle 資料庫進行查詢。

其實可以不必另外去安裝 Oracle Data Provider 或是其他資料庫的 Data Provider,在 LINQPad 裡就有提供一個「IQ Driver for MySQL, SQLite, Oracle」,裝了這個之後就可以在環境未安裝相對應 Data Provider 的情況下依然可以進行 LINQ 查詢操作。

在「Add Connection」點選後所出現的「Choose Data Context」視窗裡點擊「View more drivers…」,

image

接著會開啟「Choose a Driver」視窗,這邊就有提供很多種 drivers,而這裡所我們要選擇使用的是最前面第一個「IQ Driver - for MySQL, SQLite, Oracle」,接著點擊「Download & Enable Driver」,

image

下載並安裝完成之後,在「Choose Data Context」的「Build data context automatically」就會多了一個「IQ ( Supports Oracle, MySQL, SQLite )」,

image

選擇使用「IQ ( Supports Oracle, MySQL, SQLite )

image

接著顯示「IQ Connection」視窗,這邊就輸入連接資料庫的相關資料,

image

輸入完資料庫連接資料後做連接測試,確認可以連接成功,

image

回到 LINQPad 的視窗就可以看到 Connection 有加入剛才所添加的資料庫與 Table 列表,

image

接著輸入 LINQ Expression 來進行查詢操作,並確認可以執行,

image

另外,這個 IQ Driver 比較特別的是可以看到轉換後的 SQL Command 內容,

image

另外像是 SQLite 也是可以使用 IQ Driver,

image

轉換的 SQL Command,

image

 

什麼情況下會在 LINQPad 使用 IQ Driver 呢?

就如同我一開始所說的,可能用的並非開發人員自己的電腦,所以無法直接在環境裡去安裝 Data Provider,或是想要了解非 MS SQL 資料庫執行 LINQ Expression 所轉換的 SQL Command。

 

以上

沒有留言:

張貼留言

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。