【问题标题】:How do you display the SQL statement of a Linq-To-SQL query?如何显示 Linq-To-SQL 查询的 SQL 语句?
【发布时间】:2014-10-08 15:48:24
【问题描述】:

我正在尝试检索具有特定日期的最早 DateTime 值。 Holder 实例已经从数据上下文中检索到了(没有预取),现在我需要通过 IO EntitySet 进行搜索(还没有取到)。

我在 foreach 循环中为每个持有者执行此操作,因此检索请求的值需要很长时间。索引表没有帮助,所以我想查看 SQL 语句以优化数据库。

这是需要翻译成SQL的代码:

DateTime? entryDateTime = (from io in Holder.IOs
                           where  io.IOStatus == "Entry" &&
                                  io.IODateTime.HasValue &&
                                  io.IODateTime.Value.Date == date.Date
                                  select io.IODateTime).Min();

不能使用 LinqPad,因为 linq 语句不直接查询 DataContext,而是查询 IO EntitySet。

另外,如果有人知道如何重写 linq 语句以加快检索速度,请告诉我。我不想使用 LoadOptions,因为这会延迟应用程序的启动过程。

【问题讨论】:

标签: c# sql-server performance linq linq-to-sql


【解决方案1】:

获取查询,在调试器中停止。您应该能够将鼠标悬停在查询对象上看到它。

我认为你的问题是 Min.你在 SQL 中得到了你在 LINQ 中所拥有的东西,而这不是我在 SQL 中要做的。

我会使用 order by 和 Top 1 - 在 LINQ 中转换为 First ()。

【讨论】:

  • 你指的是什么查询对象?我会试试你的建议。
  • 您可以创建的。没有 Min() 它是一个 IQUeryable 你回来 ;) 把它放到一个变量中。
  • orderbyFirstOrDefault() 的执行时间相同。还有其他建议吗?
  • 我在linq对象中也找不到SQL语句。
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
相关资源
最近更新 更多