2012年1月26日 星期四

Oracle ODAC for Entity Framework + ASP.NET MVC 3 + MiniProfiler.MVC3


觀察 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

 
http://nuget.org/packages/MiniProfiler.MVC3

有關安裝的相關訊息可以參照之前的文章:「ASP.NET MVC 3 + MiniProfiler.MVC3 偵測執行效能

請務必安裝:MiniProfiler, MiniProfiler.MVC3, MiniProfiler.EF

SNAGHTML83f1a10

而文章裡的大部分內容都可以沿用,除了資料庫改使用Oracle並且使用Oracle ODAC for EF之外,另外有個地方也需要做個更新,之前的文章說EntityFramework需要安裝「4.1.10715.0」,而在 2011-11-01 的時侯EntityFramework已經更新到4.2.0.0,所以記得要將網站專案中的EntityFramework做更新的動作。

SNAGHTML840460f


專案執行 - 使用MiniProfiler

 
當網站專案安裝好MiniProfiler套件並且修改設定後就可以執行專案,我們要執行以下的Action內容:
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();
}


網頁執行:

image

接著點選MiniProfiler視窗中的 sql 項目

image

由上圖中可以清楚的看到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();
}

網頁執行:

image

觀察 sql 項目的內容:

image

由上圖可以看到MiniProfiler也把Oracel SQL Command所定義的參數內容給顯示出來,如此我們就可以很方便的觀察在SQL Command中所傳入的參數內容。

 


基本上這一篇文章的內容有點像是在炒冷飯,好像內容只是換了一點不同的東西而已,不過這篇主要還是在說明如何使用另外一種方式去觀察Oracle ODAC for Entity Framework所產生的SQL Command,強調的是在ASP.NET MVC 3 + Oracle ODAC for EF的開發情境下,使用MiniProfiler來幫助我們的開發。

延伸閱讀

 
ASP.NET MVC 3 + MiniProfiler.MVC3 偵測執行效能

觀察 Entity Framework 轉換所產出的 SQL Command


以上

沒有留言:

張貼留言

提醒

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