11

MiniProfiler でデータベース アクセスをプロファイリングしようとしていますが、問題が発生しています。私が目にする助けはすべて、「コードファースト」のエンティティフレームワーク接続のためのもののようです。私のモデルは、コードの最初の更新が今年利用可能になる前に設計され、デザイナーを使用して edmx モデルを作成しました。(私はこれをほぼ1年間使用しており、私にとってはうまくいっているようです)

MiniProfiler ドキュメント サイトの例は、私には意味がありません。いくつかのバリエーションを試しましたが、問題があります。

私のモデルは CYEntities と呼ばれ、通常は ObjectContext をインスタンス化するためにこれを行い var context = new CYEntities()ます。プロファイラーで試したことは次のとおりです...

var dbConnection = new CYEntities().Connection;
var profiledConnection = ProfiledDbConnection.Get(dbConnection);
var context = profiledConnection.CreateObjectContext<CYEntities>(); // this is the context I'd finally use to access data. 

これは例外をスローします...

System.ArgumentException: 要求された .Net Framework データ プロバイダーが見つかりません。インストールされていない可能性があります。

ここからどこへ行けばいいのかわからない。

4

2 に答える 2

11

このようにしてみてください:

var connectionString = ConfigurationManager
    .ConnectionStrings["MyConnectionString"]
    .ConnectionString;
var ecsb = new EntityConnectionStringBuilder(connectionString);
var sqlConn = new SqlConnection(ecsb.ProviderConnectionString);
var pConn = ProfiledDbConnection.Get(sqlConn, MiniProfiler.Current);
var context = ObjectContextUtils.CreateObjectContext<CYEntities>(pConn);
于 2011-07-24T07:21:29.323 に答える
7

同じ問題が発生しています。以下をweb.configに追加する必要があるようですが、私にとっては、これによりw3wp.exeプロセスがクラッシュします(ローカル要求の場合は、Visual Studioの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>
于 2011-07-25T12:16:51.873 に答える