.net 如何将EF查询跟踪回源代码

.net 如何将EF查询跟踪回源代码,.net,sql-server,entity-framework,.net,Sql Server,Entity Framework,我在3年前就看到过类似的问题,我希望到现在为止,有了EF Core,这个问题能够得到解决 我从我们的DB团队那里得到了关于在生产中运行缓慢的查询的报告,但是对于我们这样一个规模的系统,有时很难将查询追溯到导致查询的代码。是否有某种方法可以将EF生成的查询与创建查询的代码关联起来?EF Core 2.2中有一个新功能,称为查询标记: 例如: var nearestFriends = (from f in context.Friends.TagWith(@"This is my sp

我在3年前就看到过类似的问题,我希望到现在为止,有了EF Core,这个问题能够得到解决


我从我们的DB团队那里得到了关于在生产中运行缓慢的查询的报告,但是对于我们这样一个规模的系统,有时很难将查询追溯到导致查询的代码。是否有某种方法可以将EF生成的查询与创建查询的代码关联起来?

EF Core 2.2中有一个新功能,称为查询标记:

例如:

  var nearestFriends =
      (from f in context.Friends.TagWith(@"This is my spatial query!")
      orderby f.Location.Distance(myLocation) descending
      select f).Take(5).ToList();
这将生成以下SQL输出:

-- This is my spatial query!

SELECT TOP(@__p_1) [f].[Name], [f].[Location]
FROM [Friends] AS [f]
ORDER BY [f].[Location].STDistance(@__myLocation_0) DESC

EF Core 2.2中有一个新功能,称为查询标签:

例如:

  var nearestFriends =
      (from f in context.Friends.TagWith(@"This is my spatial query!")
      orderby f.Location.Distance(myLocation) descending
      select f).Take(5).ToList();
这将生成以下SQL输出:

-- This is my spatial query!

SELECT TOP(@__p_1) [f].[Name], [f].[Location]
FROM [Friends] AS [f]
ORDER BY [f].[Location].STDistance(@__myLocation_0) DESC

例如,这些注释也会出现在SQL事件探查器中吗?如果您捕获批处理/rpc,它们将在那里可见,并且通过sys.dm_exec_SQL_text在查询计划缓存中可见。如果您的意图是简单地注入可以使用trace、Profiler或XEvents捕获的事件,您也可以使用sp_trace_generateevent。例如,这些注释也会出现在SQL事件探查器中吗?如果您捕获了批处理/rpc,它们将在那里可见,并且通过sys.dm_exec_SQL_text在查询计划缓存中可见。如果您的目的是简单地注入可以使用trace、Profiler或XEvents捕获的事件,那么您也可以使用sp_trace_generateevent。