如何解决如何使用 Where 子句从 Linq 查询中跟踪 SQL 语句?
我有 Linq 声明:
context.Files.Where(f => ids.Contains(f.FileId))
我正在尝试 trace it with Extended Events,但在输出中没有看到此查询。如果我将鼠标悬停在 Files
上然后打开 Results View
,我会看到发出了以下命令:
SELECT [t0].[FileId],[t0].[Type],[t0].[Name],...
FROM [dbo].[File] AS [to]
基本上,我需要确定查询是否经过优化,我需要确凿的证据。
解决方法
由于 Deferred execution,您的查询本身不会产生任何 SQL。
但是,如果您在调试器中并且有类似的语句
var query = context.Files.Where(f => ids.Contains(f.FileId))
然后
query.ToList();
将执行您的查询,因此您应该在 Sql Profiler 等中看到生成的 SQL。
替代
Query.ToString();
不会执行查询,但会返回生成的SQL语句(但不显示所涉及参数的值)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。