1

私はこれにしばらく苦労してきましたが、問題を抱えているのは私だけではないことがわかりました (これあれを参照してください)。

少しデバッグして解決策を見つけましたが、これが「正しい」方法ではないことは確かです。

最初のデバッグ セッション (開発サーバーが有効になる前) は、ProfiledDbConnectionFactoryおよびProfiledDbConnectionクラスが必要なデータを提供することを示しましたが、接続が作成された後、ProfiledDbProviderFactoryの静的なInstanceプロパティが初期化され (既定のコンストラクターを呼び出すことによって)、明らかにCreateConnection ()がそのインスタンスで実行され、null 参照例外が発生します (末尾が null)。

私は実行することでこれを解決することができました

ProfiledDbProviderFactory.Instance.InitProfiledDbProviderFactory(_profiler, ripInnerProvider(_conn));

ProfiledDbConnection(DbConnection 接続、IDbProfiler プロファイラー)の最後。

これにより、SQL プロファイリングを表示できますが、私が書いたように、これは正しい修正ではないと感じています。

これが私が使用したサンプルコードです。私の環境やコードに何か問題があるかどうかはわかりません。これはそのままで動作するはずだと感じているからです。コメント/提案はありますか?サム?

4

2 に答える 2

0

ProfiledDbConnectionFactory を使用することに何の問題もありません。エンティティ フレームワークは無知をサポートするように設計されています。通常は、デバッガ ツールを使用し、生成された SQL ステートメントを表示するためのブレークポイントを作成します。これは、コード ファースト フレームワークが SQL ステートメントをすぐに提供するためです。

プロファイリングはパフォーマンスに影響を与える可能性があるため、本番コードで使用するのではなく、単体テストで説明した方法でプロファイル接続を使用することに固執しますSQLサーバーに含まれるSQLプロファイラーの使用を検討したい場合もあります。 SQL プロファイラーはビジュアル スタジオの拡張機能として利用できますが、まだコードを最初にサポートしているかどうかはわかりません

于 2011-08-18T05:43:48.037 に答える
0

この問題は、MiniProfiler.EF のバージョン 1.9.1 で解決されています。

于 2011-08-31T21:45:16.100 に答える