Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在查询转到SQL Server之前是否触发了任何事件?_C#_Sql Server_Ado.net - Fatal编程技术网

C# 在查询转到SQL Server之前是否触发了任何事件?

C# 在查询转到SQL Server之前是否触发了任何事件?,c#,sql-server,ado.net,C#,Sql Server,Ado.net,我想查找在查询转到SQL Server之前触发的事件。并在从服务器检索任何数据之前对sql命令进行一些更改。 通常,我的目标是创建一个继承一些基本ado.net类的类,在sql进入服务器之前,我可以通过向查询添加where条件来过滤数据。我需要对我的所有应用程序进行公共决策,但不需要单个案例。ADO.NET支持装饰器模式。从技术上讲,您可以创建自己的DbConnection子类来包装实际的连接,并在传递ExecuteScalar/ExecuteOnQuery/etc调用之前应用自己的更改。不幸的

我想查找在查询转到SQL Server之前触发的事件。并在从服务器检索任何数据之前对sql命令进行一些更改。 通常,我的目标是创建一个继承一些基本ado.net类的类,在sql进入服务器之前,我可以通过向查询添加where条件来过滤数据。我需要对我的所有应用程序进行公共决策,但不需要单个案例。

ADO.NET支持装饰器模式。从技术上讲,您可以创建自己的DbConnection子类来包装实际的连接,并在传递ExecuteScalar/ExecuteOnQuery/etc调用之前应用自己的更改。不幸的是,包装连接、命令、参数和读取器的需要使这有点尴尬,请看一下“mini profiler”的例子(它使用该模式来提供检测和日志记录)


然而,一个更好的方法可能是在上游实施。在许多情况下,盲目添加“where”将失败。

不是现成的-当您发出
.ExecuteNonQuery
或类似命令时,查询将转到SQL Server。但是,您可以围绕
SqlCommand
类编写一个包装器,并在调用
.ExecuteNonQuery
(或
.ExecuteReader
)之前触发一个事件,让您的代码有机会处理该事件。