4

我設置MiniProfiler.MVC3。控制器和視圖分析工作正常,但我真正感興趣的是SQL分析。我一直無法得到這個工作。我正在使用EF Code First和SQL 2008數據庫。MVC-迷你探查器V1.7不型材SQL

我已按照這篇文章的所有建議..

mvcminiprofiler-on-ef-4-1-code-first-project-doesnt-profile-sql

在miniprofiler.cs我有我的SQL連接設置爲...

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["CMDBMVC3"].ConnectionString); 

我的web.config數據庫連接是...

<add name="CMDBMVC3" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; AttachDBFilename=|DataDirectory|CMDB_MVC3.mdf;Initial Catalog=CMDB_MVC3;Trusted_Connection=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> 

如果我把一個斷點上mi ni-profiler行指向正確的db連接。我不確定此時還有什麼要做。我將不勝感激關於如何獲得SQL分析工作的任何方向。

+0

有人能幫助我嗎?我仍然無法使SQL分析工作。感謝任何人可以提供的幫助。 –

回答

0

我首先使用EF代碼,並在我的Context構造函數中使用mini profiler創建一個新的連接工廠,並將其傳遞給ProfiledDbConnectionFactory方法,這會返回一個配置文件連接,然後您可以將其設置爲上下文的DefaultConnectionFactory。

public MyConext() 
{ 
    var factory = new ConnectionFactory(); 
    var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory); 
    Database.DefaultConnectionFactory = profiled; 
} 

連接製造工廠剛剛返回一個新的SQL連接

public class ConnectionFactory :IDbConnectionFactory 
{ 
    public DbConnection CreateConnection() 
    { 
     var cnn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["SomeConnection"].ToString()); 

      return cnn;    
    } 

你還需要將ProfiledDBProvider添加到Web配置文件。確保版本號對您是正確的。

<system.data> 
    <DbProviderFactories> 
     <remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" /> 
     <add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" 
       description="MvcMiniProfiler.Data.ProfiledDbProvider" 
       type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" /> 
    </DbProviderFactories> 
    </system.data> 

這對我在使用Miniprofiler nuget包的MVC和asp.net webforms中都適用。我還會檢查Nuget軟件包的新MVC版本,它會自動將分析配置爲全局操作過濾器的一部分。

+0

非常感謝您的回覆。我已經使用MiniProfiler.MVC3 v1.7此版本在App_Start文件夾中創建miniprofiler.cs。礦如下 '代碼' 公共靜態無效預起動() \t { \t變種工廠=新SqlConnectionFactory(ConfigurationManager.ConnectionStrings [ 「CMDBMVC3」]的ConnectionString)填充; var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory); \t \t Database.DefaultConnectionFactory = profiled; \t \t} –

+0

其實我已經試過miniprofiler.mvc3 V1.7上2個獨立的項目,在兩個單獨的計算機上使用完全相同的響應。根本沒有SQL分析。我顯然做錯了什麼,我只是無法弄清楚它是什麼。 –