我尝试了多种方法,例如使用双连字符,即--THIS是一个注释,但是当在分析器中读取执行的sql时,注释将被删除,只留下正在执行的原始SQL。
我想这样做是为了在查看每分钟超过8000个条目的SQL事件探查器输出时快速识别查询及其来源, 像
这样的东西--Method signature and an application name
e.g。
--MyMethod(string username) in MyFunkyAppName.
我正在使用EntityFramework 4.3,这使得linq与实体之间的事情变得更加复杂,并且为了更好的衡量标准,还有一小部分linq to sql。
编辑:我知道添加狡猾的where子句的解决方案或使用匿名属性来识别Clever tricks to find specific LINQ queries in SQL Profiler之类的内容,但我希望远远不够不那么黑客的方法或者也许是一般的方法。
答案 0 :(得分:4)
以下是一种可用于标记Entity Framework查询的扩展方法。它使用WHERE子句,但不应该影响性能。
context.Table1.SetQueryName().Where(x => x.C1 > 4)
以下是如何使用它:
context.Table1.SetQueryName("Search for numbers > 4").Where(x => x.Number > 4)
它将使用调用方法名称作为查询名称。
您可以指定其他名称:
SELECT
[Extent1].[Number] AS [Number]
FROM (SELECT
[Table1].[Number] AS [Number]
FROM [dbo].[Table1] AS [Table1]) AS [Extent1]
WHERE
(N'Query name: Search for numbers > 4' IS NOT NULL)
AND
(N'Source: C:\Code\Projects\MyApp\Program.cs (49)' IS NOT NULL)
AND ([Extent1].[Number] > 4)
以下是SQL的外观:
"/home/joci/Joci test.txt"