【问题标题】:Is it possible to set the actual SQL that the entity framework provider will execute?是否可以设置实体框架提供者将执行的实际 SQL?
【发布时间】:2009-06-25 14:59:10
【问题描述】:

我的实体框架提供商 (CoreLabs/Mysql/devart) 正在创建异常缓慢的查询。

我可以设置将要执行的实际 sql 查询吗?

谢谢

【问题讨论】:

  • 好问题:我在 Entity Framework 中使用过存储过程,但那是在 SQL Server 中使用的。
  • 我的存储过程也可以在我的 mysql 提供程序中工作。但是我的实体上的导航属性没有被填充。
  • 我想为 Oracle 评估 devart。你能分享一下你遇到过什么样的慢查询吗?是 devart 生成的低效/坏 sql 吗?
  • 错误查询的根本原因是实体框架使用了 EF 的继承。可能是 EF,也可能是 devart.. 我倾向于 EF

标签: c# .net entity-framework


【解决方案1】:

很有趣,我只是在看LINQPad - New Features for Entity Framework。网络直播进行到一半时,他展示了 EF 生成的脚本和 Linq-To-Sql 生成的相同查询; linq-to-sql 生成的脚本效率更高。现在我不知道使用 linq-to-sql 是否适合您,但我认为您应该知道,

关于你的问题,因为我理解 EF 和 Linq-to-sql 的全部意义,以避免程序员在字符串中编写 TSQL,不会强制输入你自己的 SQL 命令来破坏 EF 和 Linq 的全部目的-to-sql?

【讨论】:

    【解决方案2】:

    是的,一种方法是使用ObjectQuery.ToTraceString API。

    【讨论】:

    • 据我了解,作者问的是如何将SQL查询替换为执行特定对象查询,而不是如何读取底层SQL。
    • 抱歉,误读为“看到”。是的,如果 EF v1,您可以使用存储过程来执行任意 SQL。见:msdn.microsoft.com/en-us/library/bb399203.aspx
    猜你喜欢
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多