【问题标题】:How do I know what does EF translate Linq queries into?我怎么知道 EF 将 Linq 查询翻译成什么?
【发布时间】:2011-12-19 23:40:43
【问题描述】:

在许多站点/博客上,我注意到想要解释 linq 机制的人们会编写 Linq 查询并为此提供 SQL 翻译。我如何获得自己查询的翻译? 我在 VS2010 中使用 EF .Net 4.0。是否有一个地方(财产甚至一些第三方工具)可以让我看到它们被翻译成什么?

【问题讨论】:

  • 不是直接答案,但您应该查看EFProf。是的,它是一个商业工具,但它真棒。 (也有免费的方法,比如 SQL Profiler)
  • 这正是我想要的!谢谢,它运行良好,我对 30 天试用感到满意 :)

标签: sql linq entity-framework translation


【解决方案1】:

您可以使用ObjectQuery.ToTraceString 方法:

var query = ...
string sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();

但是,这种方法的一些缺点是它只会显示查询,而不是更新/插入/删除。此外,它不会显示使用的参数。

如果您需要尽可能多的查询详细信息,请使用 SQL Server Profiler 作为Neil suggested

Julie Lerman 在 MSDN 上有一篇很好的文章,其中包含不同的选项:Profiling Database Activity in the Entity Framework。她提到:

【讨论】:

  • 是的,它真的很有限,不允许翻译很多我想翻译的查询,但是谢谢:)
【解决方案2】:

最简单的方法是使用 SQL Profiler。在调试方面,我发现这是一个真正的天赐之物。

【讨论】:

  • 谢谢,这正是我一直在寻找的,但我只有 MSSQL 的 Express 版本,所以我必须使用一些更高级的安装程序脚本来获取分析器,所以我现在就通过因为我赶时间。
【解决方案3】:

您可以使用LinqPad,您可以查询您的实体模型并查看生成的SQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多