我使用EF通过SELECT语句获取记录。对于某些性能问题,我需要记录命令,以便返回的行数例如为1000。但是我找不到任何示例或文档来执行此操作。
我认为可以使用IDbCommandInterceptor并实现CommandExecuted方法来实现这一点。但不确定。
IDbCommandInterceptor是否可用或应该以其他方式使用?
在搜索Web并调试和跟踪并调查EF Source之后,我意识到在当前的Implementation中这是不可能的。IDbCommandInterceptor.CommandExecuted Interceptor在对数据库进行查询后立即调用,即只有DbDataReader,command ...,但没有获取记录数。要获取获取的记录计数,应对DbDataReader进行枚举,以获取行计数。所以我更改了EF LazyEnumerator,在每次调用MoveNext之后,增加局部变量,并且在处置LazyEnumerator时,我们已获取行号或实体化的实体号
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句