使用PredicateBuilder / AsExpandable时如何跟踪linq查询?

时间:2009-09-23 14:49:43

标签: linq predicatebuilder

我正在使用PredicateBuilder,这意味着我正在使用AsExpandable扩展方法。问题是我无法再跟踪我的SQL查询,因为当我尝试将查询强制转换为ObjectQuery时会抛出以下错误,以便我可以对它执行ObjectQuery.ToTraceString()调用...

无法将类型为'LinqKit.ExpandableQuery`1 [Genesis.Person]'的对象强制转换为'System.Data.Objects.ObjectQuery'。

任何想法?

3 个答案:

答案 0 :(得分:5)

我建议在LINQPad中对查询运行Dump(),并使用SQL选项卡查看生成的SQL。这样做,将LINQPad连接到您的Entity Framework上下文,按F4以包含对LinqKit.dll的引用,并将LinqKit作为命名空间导入。如果您需要有关如何执行此操作的其他指导,请与我们联系。

答案 1 :(得分:3)

使用以下通用PredicateBuilder而不是LinqKit:

http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/

然后ObjectQuery.ToTraceString()将按预期工作。

答案 2 :(得分:1)

我不熟悉您的确切问题,但是您是否可以使用(例如,假设MSSQL的探测器)在SQL服务器上运行跟踪?

这仍然允许您查看已执行的查询,并且您可以将其限制为仅记录的计算机...