4

昨日、プロジェクトに MiniProfiler.MVC3 - 1.7 パッケージをセットアップしました。コントローラーとビューのプロファイリングは正常に機能していますが、私が本当に興味を持っているのは SQL プロファイリングです。私はこれを機能させることができませんでした。SQL 2008 データベースで EF Code First を使用しています。

この投稿のすべての提案に従いました..

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" />

ミニプロファイラーの行にブレークポイントを置くと、正しいデータベース接続を指します。この時点で他に何をすべきかわかりません。SQL プロファイリングを機能させる方法についてご指示いただければ幸いです。

4

1 に答える 1

0

最初に EF コードを使用し、Context コンストラクター内でミニ プロファイラーを使用して、新しい接続ファクトリを作成し、これを ProfiledDbConnectionFactory メソッドに渡します。これにより、プロファイルされた接続が返され、コンテキストの DefaultConnectionFactory として設定できます。

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

接続 Facotry は、新しい 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 の両方の Web フォームでうまく機能します。また、グローバル アクション フィルターの一部としてプロファイリングを自動構成する nuget パッケージの新しい MVC バージョンもチェックします。

于 2011-08-12T08:35:16.690 に答える