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
正常執行 LINQ 查詢操作
非 MS SQL 的資料庫是無法看到 EF 所轉換的 SQL 內容,
至於怎麼看非 MS SQL 的 LINQ 操作所轉換的 SQL Command,在之前的文章有做過交代,「Oracle for Entity Framework - LIKE 的查詢操作方式」。
上面的情況是在有安裝 Oracle Data Provider 的環境下,而接著再來看看在一個沒有安裝 Oracle Data Provider 的環境下會有什麼樣的狀況,
在下圖中有看到我們已經選定 Web 專案的 DLL,但因為環境沒有安裝 Oracle Data Provider 而無法正常帶出 Connection String 內容,
這個時候就需要在機器中馬上安裝 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…」,
接著會開啟「Choose a Driver」視窗,這邊就有提供很多種 drivers,而這裡所我們要選擇使用的是最前面第一個「IQ Driver - for MySQL, SQLite, Oracle」,接著點擊「Download & Enable Driver」,
下載並安裝完成之後,在「Choose Data Context」的「Build data context automatically」就會多了一個「IQ ( Supports Oracle, MySQL, SQLite )」,
選擇使用「IQ ( Supports Oracle, MySQL, SQLite )」
接著顯示「IQ Connection」視窗,這邊就輸入連接資料庫的相關資料,
輸入完資料庫連接資料後做連接測試,確認可以連接成功,
回到 LINQPad 的視窗就可以看到 Connection 有加入剛才所添加的資料庫與 Table 列表,
接著輸入 LINQ Expression 來進行查詢操作,並確認可以執行,
另外,這個 IQ Driver 比較特別的是可以看到轉換後的 SQL Command 內容,
另外像是 SQLite 也是可以使用 IQ Driver,
轉換的 SQL Command,
什麼情況下會在 LINQPad 使用 IQ Driver 呢?
就如同我一開始所說的,可能用的並非開發人員自己的電腦,所以無法直接在環境裡去安裝 Data Provider,或是想要了解非 MS SQL 資料庫執行 LINQ Expression 所轉換的 SQL Command。
以上
沒有留言:
張貼留言