我正在使用 PredicateBuilder,这意味着我正在使用 AsExpandable 扩展方法。问题是我无法再跟踪我的 SQL 查询,因为当我尝试将查询强制转换为 ObjectQuery 时会引发以下错误,以便我可以对其进行 ObjectQuery.ToTraceString() 调用...
无法将“LinqKit.ExpandableQuery`1[Genesis.Person]”类型的对象转换为“System.Data.Objects.ObjectQuery”类型。
有任何想法吗?
我正在使用 PredicateBuilder,这意味着我正在使用 AsExpandable 扩展方法。问题是我无法再跟踪我的 SQL 查询,因为当我尝试将查询强制转换为 ObjectQuery 时会引发以下错误,以便我可以对其进行 ObjectQuery.ToTraceString() 调用...
无法将“LinqKit.ExpandableQuery`1[Genesis.Person]”类型的对象转换为“System.Data.Objects.ObjectQuery”类型。
有任何想法吗?
我建议在LINQPad中对您的查询运行 Dump() ,并使用 SQL 选项卡查看生成的 SQL。执行此操作,将 LINQPad 连接到您的实体框架上下文,按 F4 以包含对 LinqKit.dll 的引用,并将 LinqKit 作为命名空间导入。如果您需要有关如何执行此操作的其他指导,请告诉我。
使用以下通用 PredicateBuilder 代替 LinqKit:
http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/
然后 ObjectQuery.ToTraceString() 将按预期工作。
我不熟悉你的确切问题,但你能不能在 SQL 服务器上运行跟踪而不是使用(例如,假设 MSSQL 的探查器)?
这仍然允许您查看已执行的查询,并且您可以将其限制为仅记录您的机器......