由于有时会创建疯狂的 SQL,因此分析 LINQ 查询及其执行计划尤其重要。
我经常发现我需要跟踪特定查询并且很难在查询分析器中找到。我经常在有很多正在运行的事务(有时是生产服务器)的数据库上执行此操作 - 所以仅仅打开 Profiler 是不好的。
我还发现尝试使用 DataContext 来跟踪是不够的,因为它没有给我 SQL,我实际上可以自己执行。
到目前为止,我最好的策略是在我的查询中添加一个“随机”数字,并在跟踪中对其进行过滤。
林克:
where o.CompletedOrderID != "59872547981"
分析器过滤器:
'TextData' like '%59872547981'
这适用于几个警告:
- 我必须小心记住删除条件,或者选择不会过多影响查询计划的东西。是的,我知道把它留在里面是自找麻烦。
- 据我所知,即使使用这种方法,我也需要为我需要跟踪的每个 LINQ 查询启动一个新的跟踪。如果我转到现有跟踪的“文件 > 属性”,则无法更改过滤条件。
您无法在您的应用程序中运行查询并在 Profiler 中看到它,而无需任何额外的努力。只是希望其他人想出了比这更好的方法,或者至少建议搜索一个比在列上查询更“危险”的标记。