3

クエリが SQL Server に送信される前に発生したイベントを見つけたい。サーバーからデータを取得する前に、sql コマンドでいくつかの変更を行います。一般的に、私の目標は、いくつかの基本ado.netクラスを継承するクラスを作成することです。ここで、クエリにWHERE条件を追加することにより、SQLがサーバーに送られる前にデータをフィルタリングできます。すべてのアプリケーションに共通の決定が必要ですが、単一のケースではありません。

4

1 に答える 1

3

ADO.NET はデコレータパターンをサポートしています。技術的には、実際の接続をラップする独自の DbConnection サブクラスを作成し、ExecuteScalar / ExecuteNonQuery / etc 呼び出しを渡す直前に独自の変更を適用できます。残念ながら、接続、コマンド、パラメーター、およびリーダーをラップする必要があるため、これは少し厄介です。この例については、「ミニプロファイラー」を少し見てください (パターンを使用して計測とログを提供します)。

ただし、ここでのより良いアプローチは、上流の実装を微調整することです。多くの場合、やみくもに「where」を追加すると失敗します。

于 2013-06-23T14:53:44.017 に答える