首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用AOP技术拦截ADO.Net

利用AOP技术拦截ADO.Net
EN

Stack Overflow用户
提问于 2011-05-03 13:54:20
回答 2查看 866关注 0票数 2

我有一个相当大的代码库,使用了各种不同的ADO技术(例如,一些EF,在某些情况下直接使用ADO.Net )。

我想知道是否有任何方法可以全局拦截任何ADO.Net调用,这样我就可以开始审计信息,比如执行的确切的SQL语句、时间、返回的结果等等。

主要的想法是,如果我能做到这一点,我不应该改变我现有的任何代码,我应该能够只截取/包装ADO.Net.这个是可能的吗?

编辑

有人建议我研究PostSharpCciSharp事后思考,但是如何使用其中之一来获得所需的结果呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-03 17:00:29

不是的。如果您直接针对ADO.NET类型编写代码,您就不能直接告诉DynamicProxy:“嘿,在所有这些all中使用SqlConnection的地方都要放置一个代理”。DynamicProxy是一个运行时代理生成器。您似乎想要编译后的AOP,所以请查看PostSharpCciSharp事后思考

编辑:如果这些工具都不够,你可以使用Mono.Cecil直接改变你的IL,但这并不容易。例如,见:

票数 1
EN

Stack Overflow用户

发布于 2019-03-22 13:30:29

vdh_ant

我想知道是否有任何方法可以全局拦截任何ADO.Net调用,这样我就可以开始审计信息,比如执行的确切的SQL语句、时间、返回的结果等等。

为什么不使用RDBMS中可用的分析工具呢?它们更通用,因为它们将捕获所有的SQL语句和查询,而不管具体的_DB API_s是什么。此外,它们还提供标准的性能分析和统计。

另一种选择是编写自己的虚拟ADO.NET提供程序,如果需要特定于DB的功能,可以将其作为System.Data.Common类的包装器,或者是围绕特定提供程序编写的包装器。该包装器可以记录必要的信息,并将实际工作委托给底层本机提供程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5870539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档