识别 linq to sql 查询的来源

Posted

技术标签:

【中文标题】识别 linq to sql 查询的来源【英文标题】:Identify source of linq to sql query 【发布时间】:2009-10-30 15:10:25 【问题描述】:

我们的代码中开始有大量的 linq to sql 查询。我们已经开始更加关注性能,并且开始看到我们认为来自 linq 的查询。它们具有 t1、t2...tN 值,因此我们确信它们是 linq 生成的。但是,我们很难确定代码中作为查询源的位置。显然,我们根据请求的表格和列有一个大致的想法。

有没有办法“标记”或“命名”查询,以便在跟踪中显示以更轻松地识别查询?

【问题讨论】:

【参考方案1】:

您可能会发现我的Linq-to-SQL query profiler 很有用;它允许您将查询与堆栈跟踪和数据库端 I/O、计时、执行计划和其他详细信息一起记录,这些详细信息可用于查明查询产生的影响以及查询的来源(在代码中,用户操作(s)和/或调用触发它等)。

它有许多filter options,您可以在自己的代码中控制这些filter options,因此您可以将其设置为仅捕获满足特定条件的查询。例如。查询:是expensive I/O-wise,有long execution time,有table scans,hits specific tables,甚至是你自己的custom filters,等等。它是为运行时分析而设计的,所以你可以在你的应用程序中分发日志组件并切换在 prod 环境中根据需要启用它。

我在这里发布了一个简短的介绍: http://huagati.blogspot.com/2009/06/profiling-linq-to-sql-applications.html

您还可以从以下网址下载分析器并获得 45 天免费试用许可证: http://www.huagati.com/L2SProfiler/

【讨论】:

【参考方案2】:

到目前为止,我还没有找到这样做的方法。

【讨论】:

以上是关于识别 linq to sql 查询的来源的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to DataSet,DataTable.AsEnumerable() 无法识别

LINQ To Entities 无法识别方法 Last。真的吗?

LINQ To Entities 无法识别方法 Last。真的吗?

C#学习教程:LINQ to Entities无法识别方法’System.String Split(Char )’方法

LINQ to Entities 无法识别方法“System.Object GetValue(...)”

LINQ to Entities 无法识别方法“System.String ToString(Int32)”