網頁

LINQ Insight - 整合Visual Studio的LINQ分析工具

LINQ Insight - 整合Visual Studio的LINQ測試利器

LINQ Insight是一套有別於LINQPad的產品,LINQPad雖然一開始是以LINQ為出發點,但發展到最後已經算是一個簡化版的編輯器環境。而LINQ Insight是一套專注在Visual Studio與LINQ的產品,它與LINQPad有幾項差異:

  • LINQ Insight與Visual Studio 2010/2012/2013整合。(LINQPad是獨立執行)
  • LINQ Insight的一大特色是,直接在Visual Studio編輯器裡執行你所撰寫好的LINQ(不用啟動專案哦)並取回結果分析。
  • LINQ Insight在有LINQ含參數的部分,也非常容易測試,不用特別進行事前準備。(後面會有範例)
  • LINQ Insight會自動偵測目前專案裡的連線字串(ADO.NET / EDMX)並使用。(LINQ需額外設置)
  • LINQ Insight支援更多元的LINQ Provider。
  • LINQ Insight特有ORM Profiler

以下以一個ASP.NET MVC 5專案與Northwind資料庫產生的ProductsController來說明各項特性。

SQLLocalDB不支援

就筆者目前測試的結果,LINQ Insight在使用SqlLocalDB的情況無法使用(LINQPad可以)。以下測試是連線至SQL Server Express進行測試。

目前最新版已經支援SqlLocalDb,實用性大增。:D

整合Visual Studio展示

當我們下載LINQ Insight,在Visual Studio的編輯區按左鍵,可以看到新增了「Run LINQ Query」

Run LINQ Query

讓我們將游標移至某一行LINQ運算式並執行Run LINQ Query

Click Run LINQ Query

他會立即分析LINQ運算試,在這裡LINQ Insight發現兩種不同的執的結果,會詢問我們想要測試那一種語法:

Result

由頁籤切換「SQL」可以查看產生的SQL語法:

SQL

由頁籤切換「LINQ」可以查看執行的LINQ語法:

LINQ

這個「LINQ」頁籤不只可以查詢執行的LINQ語法,它也可以直接執行開發者所輸入的語法,但比較可惜的是,此處沒有IntelliSense的功能。

Edit LINQ

回到「Result」頁籤,它還有個好用的分組功能,直接把你想分組的欄位往上拉中間灰色欄位:

Grouping

LINQ互動視窗就會任拉選的欄位進行分組呈現。

最後視窗上的「Filter」是進行關鍵字搜尋,它會搜尋出所有符合關鍵字的欄位並且進行醒目提示。

Filter

如果你有注意上面的圖示的話,你可以發現,如果欄位是關連資料(FK),那麼LINQ Insight不會直接呈現資料,而且讓我們可以使用下接選單的方式來呈現關連資料:

FK Data

在「Results」呈現的資料,我們某一欄位點擊兩下可以進行資料修改。如果剛好是日期欄位,還會貼心跳出日曆讓你選擇:(以下是執行db.Orders)

Edit Data

以上都是簡單的測試。我們經常需要傳入參數值並查看結果,這部分LINQ Insight大大方便於LINQPad:

 // GET: Products Paging
 public IEnumerable Paging(int index, int size)
 {
     int skipSize = index*size;
     var result = (from p in db.Products 
                   orderby p.ProductName 
                   select p).Skip(skipSize).Take(size);
     return result;
 } 
 

這是一段LINQ的分頁程式,我們想要測試這段LINQ程式碼,點選Run LINQ Query:

參數

LINQ Insight會聰明的分析這段LINQ有兩個參數,並顯示「Edit Query Parameters」視窗要求開發者輸入,然後執行LINQ程式碼。之後我們也很方便由介面上去修改參數值去進行測試:

修改參數

LINQ Profiler

如果你的應用程式與資料庫之間是有使用ORM Solution,例如,Entity Framework、HNibernate、LinqConnect或Linq to SQL,那麼LINQ Insight還提供了類似SQL Server Profile的功能,一樣是整合於Viusal Studio之內,讓我們方便分析LINQ的執行過程。預設LINQ Profiler不會出現,由「檢視」→「其他視窗」→「LINQ Profiler」,點選「黑色三角型」啟用LINQ Profiler。

不過筆者一開始就鬼擋牆似的,專案怎麼跑,LINQ Profiler就只是一片空白。最後發現,原來要開啟…

Enable IntelliTrace

我的IntelliTrace不明原因被取消勾選(OzCode?),再來還有個好玩的,如果你勾選了第二個選項「IntelliTrace事件和呼叫資訊」,那麼LINQ Profiler會一樣是一片空白。而第一次啟動後得到一個:

LINQ Insight Error

我很乖,重新啟動Visual Studio之後,終於:

LINQ profilter

由鬼打牆的設置我合理猜測,LINQ Profiler其實是一個IntelliTrace的整理器,只是比起IntelliTrace,LINQ Profilter介面美,資訊的整理與查詢都方便許多。

目前LINQ Insight有一個HIGH FIVE計畫,可以取得各種折扣,最高是Free license,想要免費賺149鎂的人可以參加。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。