从EntityFramework ObjectQuery获取SQL命令文本和参数

时间:2011-04-01 15:48:50

标签: entity-framework entity-framework-4 linq-to-entities objectquery

我有一些EF无法支持的查询:空间,索引提示等。 然而,大多数数据都是EF友好的,我可以使用linq提供程序。

实施例: 我有Person,PersonAddress和Address表。在地址上我有一个空间索引,必须用于定义搜索区域。基于此我想进一步过滤,例如在Person.BirthDate上。 我已经在T-SQL中实现了这个,但只有固定的参数。

相反,我希望将空间和实体框架查询结合起来,为此,我需要从ObjectQuery获取SQL命令文本和参数。 当我有那些合并时,这些将很容易。不幸的是,我只能使用ObjectQuery.ToTraceString()获取命令文本。

我正在使用linqpad,我发现它能够获取参数和文本,所以这一定是可能的。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

LinqPad最有可能使用类似于所有跟踪和分析工具的东西。检查tracing wrapper样本。它只是生成SQL查询的提供程序的包装器,但在包装器级别上,您完全不了解已执行查询的类型。它只是DbCommand。当您具有执行的linq查询的上下文时,修改SQL的唯一方法是custom provider