问题标签 [iinterceptor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - NHibernate 和拦截器 - 测量/监控 SQL 往返时间
为了获得对缓慢或潜在缓慢区域的早期警告,我想要一个 NHibernate 拦截器,它可以充当性能监视器,以便任何花费超过给定时间的数据库操作都会引发一个事件并且(重要的是)应用程序日志的完整堆栈跟踪。
拦截器似乎是一个很好的窗口。但是,经过试验,似乎无论如何都无法捕捉到“刚刚从 SQL 中返回”的事件:
OnPreFlush
并OnPostFlush
处理涉及写入但不在读取事件上调用的完整批次。OnPrepareStatement()
似乎是最好的开始测量,但停止?- 对于读取事件,
OnLoad
可能是停止时钟的地方,但它被称为每个实体返回一次 - 我怎么知道我何时到达所有实体的末尾? - 对于写入事件,我看不到任何 post-SQL 事件(除了那些在整个批次上工作的事件 -
OnPostFlush
并且OnAfterTransaction
; 我得到的印象OnSave
,OnFlushDirty
等在实际数据库调用发生之前被调用 - 不过很高兴得到纠正)。
据我所知,文档严重缺乏关于 NHibernate 与数据库交互的管道顺序的确切信息,因此当在该管道中调用与实际 SQL 执行本身相关的不同事件和拦截器调用时。
这是需要永久可用的东西,位于后台,几乎不需要人工干预,除非检测到慢查询。它还需要在大型服务器场上无头运行,因此 NHibernate Profiler 等交互式工具已经过时:它实际上是我们可以启用和忘记的东西,让它在适当的时候记录。
有什么我错过或误解的吗?
c# - 使用 Nhibernate 维护表历史记录
我有一种情况,我必须维护一张桌子的历史。
例如:我有 PaymentTransaction 表,我想保留 PaymentTransactionHistory 用于审计目的。
我们在 NHIbernate 中是否有任何东西可以用来实现这一点。我阅读了有关 IInterceptor 和 Events 的内容,但无法真正理解它们在我的情况下是否有用。
我正在使用 Fluent NHIbernate。
非常感谢
c# - 静态方法的拦截器
我们有遗留代码,想知道应用程序何时调用“执行”方法。
遗留代码结构:
是否可以在执行静态方法之后或之前使用 IInterceptor 或 PostSharp.dll 来实现附加操作?