2016-06-01 6 views
0

私はDB2接続にMiniProfilerを追加しようとしています。以下は私の単純化されたコードです。MiniProfierとのDB2接続のプロファイリング

public void InitializeConnection() 
{ 
    DB2Connection cnn = new DB2Connection("connection String"); 
    var profiler = 
     new StackExchange.Profiling.Data.ProfiledDbConnection(cnn, MiniProfiler.Current); 
    IDbCommand c = new DB2Command(); 
    c.Connection = profiler ; 
} 

私の問題は、プロファイラーがDB2CommandのConnectionプロパティーに割り当てられている最後の行で発生しています。私は以下のエラーが発生しています。

タイプ 'StackExchange.Profiling.Data.ProfiledDbConnection'のオブジェクトを「IBM.Data.DB2.DB2Connection」にキャストできません 私はいくつかの異なるキャスティング・アイデアを試しましたが、何も問題はありませんでした。

答えて

0

私はあなたが後方にそれを行っていると思います。 ProfiledDbConnectionクラスへの接続を割り当てています(正しいと思われる、MiniProfilerのWebサイトのbased on the docs)。

しかし、あなたはその後、DB2固有のコマンド・オブジェクトを作成し、接続オブジェクトにProfiledDbConnectionクラスを割り当てるしようとしています。

あなたがしたいことは、profiler.CreateDbCommand()を呼び出して、ProfiledDbCommandというオブジェクトを作成し、「カバーの下に」DB2Commandクラスを作成することだと思います。

0

DB2Command.ConnectionプロパティのタイプはDB2Connectionです(エラーメッセージが参考になります)。代わりにDbConnectionをお試しください:

c.DbConnection = profiler 

More in the manual

+0

DbConnectionがDB2 DB2コマンドのパブリックではなく、保護されたプロパティであること以外は理想的です。また、クラスは封印されているため、継承することはできません。 –

+0

マニュアルには、そうでないと言われています: 'public DbConnection DbConnection {get;セット;} '。そしてなぜあなたは 'DB2Command'から継承する必要がありますか? – mustaccio

関連する問題