DbCommandInterceptionContext
全部标签 我有一个动态查询,它太大而无法放在这里。可以肯定地说,在当前形式中,它利用CLR过程根据传递的搜索参数的数量动态构建连接,然后获取该结果并将其连接到更详细的表,以带回对最终用户重要的属性。我已将整个查询转换为LINQtoEntities,我发现它生成的SQL足够高效来完成这项工作,但是通过EF6运行时,查询超时。获取生成的SQL并在SSMS中运行它只需3秒或更短的时间。我只能想象我的问题是参数嗅探。我已经尝试更新数据库中每个表的统计信息,但这并没有解决问题。我的问题是:我能否以某种方式通过EF嵌入诸如“OPTIONRECOMPILE”之类的选项? 最佳答案
我正在使用EntityFramework6,它具有出色的数据库拦截器功能,可以记录从应用程序发送到数据库的查询。但是,我正在努力为这些查询计时,我有一个长时间运行的查询,它返回数十万到数百万行,因此它需要大约6到15秒,具体取决于该查询将返回的数据量。EntityFramework正在返回一个SqlDataReader,因此我无法获得获取结果所需的确切时间。我想知道从发送查询到读取最后一行的完整执行时间。有什么办法可以做到吗。 最佳答案 这是我通常用于EF的记录器。publicclassEFLoggerForTesting:IDbC
我有一个从现有SQLServer数据库生成的EntityFramework6CodeFirst模型。数据库正在使用SQLServer更改跟踪,因此对于从EF生成的所有数据操作操作,我想设置更改跟踪上下文以将这些操作与其他外部进程所做的更改区分开来。这通常在T-SQL中完成,如WITHCHANGE_TRACKING_CONTEXT(@source_id)UPDATE...我唯一能想到的就是将上面的sql子句添加到EF生成的SQL中。虽然看起来,想要修改ORM生成的SQL本身是有问题的。尽管如此,即使我想,我也不知道在哪里可以做到。EF命令拦截能否达到目的?这个问题具体是关于SQLServ