如何获取等效于 linq 表达式的 sql 查询



如何知道我的程序在执行 linq 表达式时执行了什么 sql 查询?

分析是一种确定的方法。根据 LINQ 提供程序的不同,这也可能是内置的,例如,使用 LINQ-to-SQL,您可以将任何内容分配给.Log,它将在执行查询时编写查询。在最简单的层面上:

dataContext.Log = Console.Out; // for a LINQ-to-SQL DataContext
// TODO: now execute some queries against dataContext

在内部,我们为此(以及其他一些事情)使用自定义 ADO.NET 堆栈。它看起来像一个SqlConnection(LINQ-to-SQL 对此非常满意),但它对执行的每个命令都会为我们执行一些日志记录和分析,因此我们可以看到长时间运行的操作在哪里。我认为,如果你愿意,山姆希望向公众提供这个。

分析数据库就可以了。 请记住,在代码查询查询结果之前,不会对数据库执行语句。

你试过 LinqPad 吗?

我相信它显示了您的查询的 SQL 原型。

  1. 您可以使用 SQL 事件探查器,附带SQL 服务器安装,并捕获执行语句时的语句
  2. 你可以使用像 LINQPad 这样的工具,以及针对数据存储运行 LINQ并检查工具中的 SQL
  3. 您可以调试您的应用程序并从 ObjectQuery.ToTraceString方法
var res = somequery;
Console.WriteLine(res);

相关内容

  • 没有找到相关文章

最新更新