【发布时间】:2015-11-20 19:20:05
【问题描述】:
我正在帮助提高复杂应用程序的性能,其中包含散布在代码库中的数百个实体框架查询。我们遇到的一个问题是,当我们运行 SQL Profiler 并捕获 Entity Framework 查询时,查找实际导致通过分析器的 sql 语句的代码非常耗时。我想知道是否有某种方法可以用 sql 语句中出现的唯一标识符“标记”每个实体框架语句。类似于向实体框架为每个语句生成的实际 sql 语句添加注释。然后我们可以在分析器跟踪中看到注释,并在代码中搜索标签。关于我们如何去做这件事的任何想法?我猜一定有某种方法可以拦截 EF 生成的 sql 并在它发送到数据库服务器之前添加我们的注释。
【问题讨论】:
-
你可以在你的选择中加入一个常量,比如
select new { Tag = "Query 123", ...} -
您可能需要将该常量连接到某个东西以确保它作为参数传递。
-
如果选择得到优化,我想知道类似的东西是否会在“where”子句中起作用。我很确定“1=1”没有得到优化,所以也许“WHERE 'Tag1' = 'Tag1'”会起作用。
标签: c# entity-framework sql-server-profiler