【问题标题】:Get SQL commandtext and parameters from EntityFramework ObjectQuery从 EntityFramework ObjectQuery 获取 SQL 命令文本和参数
【发布时间】:2011-04-02 02:41:13
【问题描述】:

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

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

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

我用的是linqpad,看到它可以同时获取参数和文本,所以这一定是可以的。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 感谢跟踪包装示例的链接。这有所有缺失的部分。我现在要做的就是实现一个自定义的 Ado.net 提供程序。毕竟我对包装连接不感兴趣,只对 100% 断开连接。
    猜你喜欢
    • 2014-04-01
    • 1970-01-01
    • 2014-01-03
    • 2013-01-29
    • 2014-06-07
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多