網頁

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

      刪除