1

次のコードの最後の行は、例外をトリガーします。 OracleConnection conn = new OracleConnection(getConnectionString());

        // A SqlConnection, SqliteConnection ... or whatever          
        // wrap the connection with a profiling connection that tracks timings      
        var cnn = MvcMiniProfiler.Data.ProfiledDbConnection.Get(conn, MiniProfiler.Current); 
        OracleCommand cmd = new OracleCommand(sql, (OracleConnection) cnn);

それは次のとおりです。

Unable to cast object of type 'MvcMiniProfiler.Data.ProfiledDbConnection' to type 'Oracle.DataAccess.Client.OracleConnection'.

Oracle Data Provider を使用しています。オラクルのdevArtでも同じことが起こります。

ありがとう :)

4

1 に答える 1

2

これは、それを抽象接続として扱い、基本クラス/インターフェースで既存CreateCommandのなどのメソッドを使用する必要があるためです。CreateParameterまたは、その混乱を避けたい場合は、「dapper」(またはその他の ADO.NET ユーティリティ レイヤー) のようなものを使用すると、多くの手間が省けます。

ここでの理由は、プロファイラーが接続を「装飾」するためです。これは、他のオブジェクトを装飾し、正しいタイミングでアンラップする必要があることを意味します。実際、この方法で ADO.NET をプロファイリングする方法は次のとおりです。

于 2011-07-29T19:17:35.843 に答える