3
我想查找在查詢轉到SQL Server之前觸發的事件。並在從服務器檢索任何數據之前在sql命令中進行一些更改。 通常我的目標是創建一個繼承一些基ado.net類的類,其中我可以在sql通過addnig WHERE條件查詢到達服務器之前過濾數據。我需要所有應用程序的通用設置,但不是單一的情況。查詢轉到SQL Server之前是否有任何事件觸發?
我想查找在查詢轉到SQL Server之前觸發的事件。並在從服務器檢索任何數據之前在sql命令中進行一些更改。 通常我的目標是創建一個繼承一些基ado.net類的類,其中我可以在sql通過addnig WHERE條件查詢到達服務器之前過濾數據。我需要所有應用程序的通用設置,但不是單一的情況。查詢轉到SQL Server之前是否有任何事件觸發?
ADO.NET支持修飾器模式。從技術上講,您可以創建自己的DbConnection子類,該子類包裝實際的連接,並在傳遞ExecuteScalar/ExecuteNonQuery/etc調用之前應用自己的更改。不幸的是,需要封裝連接,命令,參數和閱讀器,這使得這個有點尷尬,有點看一下「mini-profiler」的例子(它使用模式來提供工具和日誌記錄)。
但是,這裏更好的方法可能是對上游實現進行微調。在許多情況下,盲目添加「哪裏」將會失敗。
不是開箱即用的 - 當你發出'.ExecuteNonQuery'或類似的東西時,查詢會發送到SQL Server。但是你可以在''SqlCommand'類中編寫一個包裝器,並在調用'.ExecuteNonQuery'(或'.ExecuteReader')之前觸發一個事件,讓你的代碼有機會處理它。 –