15

MvcMiniProfilerのバージョン1.6を参照しています(Nuget経由)。プロジェクトのホームページ(http://code.google.com/p/mvc-mini-profiler/)に記載されているようにすべてを設定しました。MvcMiniProfiler on EF 4.1コードファーストプロジェクトはSQLをプロファイルしません

I Web.configファイルに次のコードを持っている:

<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.6.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" /> 
    </DbProviderFactories> 
</system.data> 

(プロジェクトのホームページを持っているバージョン= 1.5.0.0 - NuGetパッケージは以降に更新されました)私は、次のコードを持っている

Global.asaxの中で(ともWeb.configファイルで定義された接続文字列):

protected void Application_Start() 
    { 
     Log.Info("ReCoupon has started."); 

     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 

     var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCouponContext"].ConnectionString); 
     var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory); 
     Database.DefaultConnectionFactory = profiled; 

     Database.SetInitializer(new ReCouponContextInitializer()); 
    } 

プロファイラは、私はそれがSQLのプロファイルを得ることができないことを除いて素晴らしい作品。私はSQL Server 2008 Expressを使用しています。私はGoogle Codeのプロジェクトのホームページで関連する問題に従っており、完全に固執しています。

+0

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

を変更ねえ@Samサフラン、ソリューションは働いた - 私はそれをかなり理解していない。私はあなたが私のビットバケットレポにアクセスできるようにして、それでもあなたが望むならそれを実際に見ることができます。 – rkaregaran

+0

シュートを1.9.1与えます。私は最終的に更新後にEFでSQLプロファイリングを行いました。 – RyanW

答えて

7

この1つは、私も長い間困惑していました。接続文字列の命名規則はDatabase.DefaultConnectionFactoryよりも優先されるようです。

web.configで接続文字列の名前を変更できますか?その後、

<connectionStrings> 
     <add name="ReCoupon" connectionString="..." /> 
    </connectionStrings> 

<connectionStrings> 
     <add name="ReCouponContext" connectionString="..." /> 
    </connectionStrings> 

から

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCoupon"].ConnectionString); 
+0

OMG - それは魅力のように働いた。私は命名規則を優先して何を意味するのか分かりません。 – rkaregaran

+0

EFコードはまず、コンテキストクラスと同じ名前の接続文字列を自動的に探します。見つからない場合は、Database.DefaultConnectionFactoryを調べます。 複数のデータベースをプロファイルする必要がある場合は、私たちが何をすべきかわかりません。 –

+0

ああ、私はばかだ、それを得た - 私は私のコンテキストがまだ働いているのか疑問に思っていた - 今はデフォルトのDB接続を設定しているので。多分マルチdbの事のどちらか確かめてください。 – rkaregaran

関連する問題