「觀察 Entity Framework 轉換所產出的 SQL Command」這一篇文章當中有簡單介紹了在Oracle ODAC For EF 的情境下如何觀察SQL Command,然而並不是每個方式都管用,而且有的方式會需要在偵錯模式下才能觀察(如使用Entity Visualizer),而之前也曾經介紹過一個可以用來偵測ASP.NET MVC執行效能的套件「MVC-Mini-Profiler」,這一個套件除了偵測執行效能外,有使用Entity Framework的話也可以偵測EF所產生的SQL Command,「ASP.NET MVC 3 + MiniProfiler.MVC3 偵測執行效能」文章裡所使用的資料庫是MS SQL Server,而當資料庫改使用Oracle而EF Provider也使用了Oracle ODAC for EF呢?
這一篇文章就來看看在使用Oracle ODAC for EF的情境下使用MVC-Mini Profiler是否可以偵測到EF所產生的SQL Command。
MVC-Mini Profiler
有關安裝的相關訊息可以參照之前的文章:「ASP.NET MVC 3 + MiniProfiler.MVC3 偵測執行效能」
請務必安裝:MiniProfiler, MiniProfiler.MVC3, MiniProfiler.EF
而文章裡的大部分內容都可以沿用,除了資料庫改使用Oracle並且使用Oracle ODAC for EF之外,另外有個地方也需要做個更新,之前的文章說EntityFramework需要安裝「4.1.10715.0」,而在 2011-11-01 的時侯EntityFramework已經更新到4.2.0.0,所以記得要將網站專案中的EntityFramework做更新的動作。
專案執行 - 使用MiniProfiler
public ActionResult Orders()
{
var profiler = MiniProfiler.Current;
List<Orders> result = null;
using (profiler.Step("Home - Orders"))
{
using (NorthwindEntities db = new NorthwindEntities())
{
var orders = db.Orders.OrderBy(x => x.OrderID);
result = orders.ToList();
}
}
ViewData.Model = result;
return View();
}
網頁執行:
由上圖中可以清楚的看到EntityFramework所產生的SQL Command內容。
接著我們也來看看如果是一個有傳入條件參數的執行:
public ActionResult Details(int? id)
{
var profiler = MiniProfiler.Current;
using (profiler.Step("Home - Order"))
using (NorthwindEntities db = new NorthwindEntities())
{
var order = db.Orders.FirstOrDefault(x => x.OrderID == id.Value);
ViewData.Model = order;
}
return View();
}
網頁執行:
由上圖可以看到MiniProfiler也把Oracel SQL Command所定義的參數內容給顯示出來,如此我們就可以很方便的觀察在SQL Command中所傳入的參數內容。
基本上這一篇文章的內容有點像是在炒冷飯,好像內容只是換了一點不同的東西而已,不過這篇主要還是在說明如何使用另外一種方式去觀察Oracle ODAC for Entity Framework所產生的SQL Command,強調的是在ASP.NET MVC 3 + Oracle ODAC for EF的開發情境下,使用MiniProfiler來幫助我們的開發。
延伸閱讀
觀察 Entity Framework 轉換所產出的 SQL Command
以上
沒有留言:
張貼留言