2014年6月17日 星期二

ASP.NET MVC 5 + Entity Framework 6 + MiniProfiler 3

MiniProfiler 在今年四月發佈了 3.0 的版本,不過新版本還不太穩定,一直到了這個月所發佈的 3.1.0 這個版本才算穩定,而 3.x 與之前的版本在設定上有些差異,並不是變得比較複雜,反而是更為簡單,而且因應不同 EF 版本與不同的資料存取,在設定上會有所不同,哪些版本應該做什麼樣的設定,在 MiniProfiler 的官網上都有做說明,所以只要照著官網上的說明就可以了。

在 2014-06-14 所舉辦的 twMVC #15 研討會,我所主講的內容裡就有說明 MiniProfiler 的使用,那麼在這裡使用文字與圖片的方式做個簡單的說明。

 


MiniProfiler

http://miniprofiler.com/

image

GitHub Repository

https://github.com/MiniProfiler/dotnet

NuGet(目前版本是 3.1.0)

https://www.nuget.org/packages/MiniProfiler/

 

以下範例說明使用 Visual Studio 2013 Update 2, MS SQL Server Express 2012

ASP.NET MVC 5, Entity Framework 6, MiniProfile 3.1.0

 

Step.1

首先建立好一個使用 ASP.NET MVC 5 與 Entity Framework 6 的網站專案,不過這次並不是使用 Database First,而是使用 Code First,不管是 Database First  還是 Code First,在使用 MiniProfiler 與 MiniProfiler.EF6 都不會有差異。

image

 

Step.2

建立 CustomerController 與方法、檢視頁面,專案透過 NuGet 加入 PagedList.Mvc,

image

image

執行結果

image

 

Step.3

透過 NuGet 安裝以下的 MiniProfiler 相關套件,注意!別以為我裝錯,裝到 MiniProfiler.MVC4,因為目前並沒有 MiniProfiler.MVC5,而且也已經在說明裡提到, ASP.NET MVC 4+ (以上版本) 是要安裝該套件。

image

MiniProfiler

MiniProfiler.MVC4

MiniProfiler.EF6

 

Step.4

安裝好套件之後,接下來就是對專案稍做修改,其實要修改哪些檔案、添加什麼程式碼,在官網上面都有詳盡說明,

image

image

image

image

所以只要照著做就可以,

_Layout.cshtml

image

image

Globla.asax

image

Web.Config

image

<system.webServer>     
    <handlers>         
        <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />     
    </handlers>
</system.webServer>

 

執行結果

image

image

 

注意

安裝套件的時候務必要先搞清楚你所使用的 EntityFramework 版本,因為 MiniPrifiler.EF6 與 MiniProfiler.EF5 (EF4 也是使用這個版本) 的設定方式有蠻大的不同,以下是 MiniProfiler.EF6 的設定方式,

image

而以下是使用 MiniProfiler.EF5 的設定方式,

image

而在我之前文章有提過的「MiniProfiler.EF」則是已經不支援,所以在安裝的時候,千萬要特別注意。

 

以上

2 則留言:

  1. 照著操作想說試用看看,好像有問題,我猜測兩個原因,第一是沒支持web api??另一個是SESSION的問題??

    回覆刪除
    回覆
    1. Hello,
      我的使用狀況無論是簡單的單一個專案(就像文章裡的)或者是超複雜的 Unit of Work + IoC + 分層架構,
      或是使用預設的 ASP.NET MVC 專案範本( Default 有包含 WebAPI 的那個 Template)
      還是簡單的 Model 層抽出,都是一樣可以使用,
      因為你沒有加以描述你的專案與所碰到問題的情況,所以我無法憑借你的猜測而說明原因,
      可以到 Stack Overflow 上面查詢。
      .
      有發生問題,也可以尋求官方的協助,而不是只有猜測
      http://stackoverflow.com/questions/tagged/mvc-mini-profiler
      http://community.miniprofiler.com/
      .
      WebApi 是可以使用的(雖然官方並無提供相關套件)
      http://farm-fresh-code.blogspot.tw/2013/06/getting-miniprofiler-to-work-with.html

      刪除

提醒

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