2

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

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

有任何想法吗?

4

3 回答 3

5

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

于 2009-10-02T18:11:14.723 回答
3

使用以下通用 PredicateBuilder 代替 LinqKit:

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

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

于 2011-10-24T23:56:22.463 回答
1

我不熟悉你的确切问题,但你能不能在 SQL 服务器上运行跟踪而不是使用(例如,假设 MSSQL 的探查器)?

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

于 2009-09-30T13:43:11.023 回答