利用Entity Visualizer擴充LINQ to Entity也可以很方便的查看Entity Framework所產生的SQL敘述

本文將介紹一擴充功能來幫助使用LINQ to Entity存取資料的使用者,更方便查看LINQ to Entity幫我們產生什麼樣的SQL敘述。

若您是使用LINQ to SQL存取資料庫,一定知道在Debug模式下利用中斷點查看LINQ查詢幫你轉成什麼樣的T-SQL敘述,或是藉由DataContext的GetCommand方法也可以達到相同目的,但LINQ to Entity的使用者就沒這麼幸福,由下圖可以看出CommandText為空字串,必須透過SQL Server Profiler來錄製LINQ to Entity所轉換的T-SQL才行,使用上似乎沒LINQ to SQL那麼方便。本文將介紹Entity Visualizer來檢視Entity Framework(以下簡稱EF)所產生的SQL敘述。

image

 

首先,必須到CodePlex下載Entity Visualizer的DLL(EntityFrameworkVisualizer.dll)。

image

 

接著把EntityFrameworkVisualizer.dll複製到Visual Studio 2010的安裝路徑及My Documents路徑,若要進行遠端偵錯,則必須把dll複製到遠端的機器上。

  • x86:InstallPath\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers
  • x64:InstallPath\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers\X64
  • C:\Users\使用者名稱\Documents\Visual Studio 2010\Visualizers

 

然後重新以Debug模式執行LINQ to Entity的查詢,就可以看到如下圖多了一個放大鏡點開之後就可以看到Entity SQL Visualizer。

image

 

但實際上要查看SQL敘述時卻遇到下圖的錯誤訊息,由錯誤訊息看來是在C:\Users\使用者名稱\Documents\Visual Studio 2010\Visualizers\EntityFrameworkVisualizer.dll無法存取所致。

image

 

只要到C:\Users\使用者名稱\Documents\Visual Studio 2010\Visualizers\EntityFrameworkVisualizer.dll解除封鎖再重新執行LINQ to Entity查詢即可。

image

 

下圖為利用Entity Visualizer來查看LINQ to Entity所產生的SQL敘述,這個擴充功能對於Debug相當實用。

image

 

【參考資料】