【问题标题】:Possible to get ESQL using ToTraceString() with parameter values included?可以使用包含参数值的 ToTraceString() 获取 ESQL?
【发布时间】:2012-05-04 00:59:32
【问题描述】:

我将 IQueryable 转换为 ObjectQuery,然后调用 ToTraceString() 来获取实体 sql:

IQueryable<SomeItem> query = context.SomeItem
            .Where(x => x.Timestamp >= start
                     && x.Timestamp <= end);

string eSql = (query as ObjectQuery<SomeItem>).ToTraceString();

字符串的“WHERE”部分如下所示:

WHERE ([Extent1].[Timestamp] >= @p__linq__0) AND ([Extent1].[Timestamp] <= @p__linq__1)]"

有没有办法以实际 DateTime 值已填充到 ESQL 而不是这些参数占位符的方式获取跟踪字符串?

我想拦截 Entity Sql 并使用原始 EntityDataReader 自己迭代结果。

谢谢。

【问题讨论】:

    标签: c# .net linq entity-framework entity-framework-4


    【解决方案1】:

    我相信这不是 ESQL,而是查询被翻译成的实际 SQL,因为 Linq 查询没有被翻译成 ESQL。 SQL 语句中永远不会嵌入参数,以防止 Sql 注入攻击。而不是如果有参数(对于 SqlServer),将调用 sp_executesql,因为它允许为占位符传递参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 2013-05-06
      相关资源
      最近更新 更多