为什么 EF 为简单查询生成子查询?

2023-12-27

有一个简单的 Linq to EF:

var query = from p in _db.Posts
            where p.BlogtId == blogId
            select p;

它会生成以下形式的 SQL:

SELECT
`Extent1`.`PostId`, 
`Extent1`.`BlogId`, 
...
FROM `Posts` AS `Extent1`
 WHERE `Extent1`.`BlogId` = @p__linq__0

但是当我向这个查询添加 order by 时

var query = from p in _db.Posts
            where p.BlogId == blogId
            orderby p.PublishDate
            select p;

它生成这个查询

SELECT
`Project1`.`PostId`, 
`Project1`.`BlogId`, 
...
FROM (SELECT
`Extent1`.`PostId`, 
`Extent1`.`BlogId`, 
...
FROM `Posts` AS `Extent1`
 WHERE `Extent1`.`BlogId` = @p__linq__0) AS `Project1`
 ORDER BY 
`Project1`.`PublishDate` ASC

为什么会生成子查询?MySQL 中这个查询存在性能问题。 MySQL 正在尝试执行内部查询,该查询会拉回数据库中的所有记录,然后尝试对主题进行排序。

我需要一个解决方案来通过 linq 生成以下 sql

SELECT
`Extent1`.`PostId`, 
...
FROM `Posts` AS `Extent1`
 WHERE `Extent1`.`BlogId` = @p__linq__0
 ORDER BY 
`Extent1`.`PublishDate` ASC

尽管您的链接可能会告诉其他人,但这不是实体框架问题。它与 MySqlConnector/net 有关。我可以证明!啊,没想到啊。

使用 MSSQL 数据库连接这个确切的场景,System.Data连接器,您将看到格式正确的 SQL。这是 MySqlConnector 内部投影的问题。如果你想修复它,那就自己进去编辑吧。

以下是如何获得本地编辑的 MySqlConnector/net 副本:如何自定义MySql Connector/net? https://stackoverflow.com/q/12944570/1026459

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 EF 为简单查询生成子查询? 的相关文章

  • 如何确保在 EF Code First 中对表关系启用级联删除?

    我想使用代码优先在表上启用级联删除 从头开始重新创建模型时 即使自动设置关系 也不会设置 CASCADE DELETE 奇怪的是 它确实为某些具有多对多关系的表启用了此功能 但您可能会认为这可能会出现问题 Setup 表 A 表B的FK指向
  • 如何创建一个 linq 查询来获取除特定值之外的所有内容

    假设我有一个 linq 查询 select r in db Roles 其中 r RoleName 不包含 Administrator select r 正是不包含部分让我感到困惑 我意识到我可以做到这一点 包含呼叫 但你如何做相反的事情
  • 是否可以拥有单个 DbContext,并将迁移文件拆分到不同的程序集中?

    我已经为每个客户构建了一个具有核心解决方案和自定义解决方案的系统 核心有它自己的 dbcontext 每个海关都有自己的用于客户端特定表的 dbcontext 自定义解决方案引用核心解决方案 dll 自定义 dll 由插件架构中的核心解决方
  • 将所有 PHP 错误输出到数据库而不是 error_log

    是否可以将所有 PHP 错误写入 MySQL 而不是标准的 error log 文件 我想如果我从头开始编写自己的错误处理程序 这是可能的 但我有很多遗留代码 理想情况下我只需进行 1 个全局更改即可 这可以做到吗 我认为如果不构建自己的错
  • Mysql如何将数据库中的时间数据类型设置为仅HH:MM

    如何将我的 mysql 数据库字段 时间 数据类型设置为数据库中的 HH MM 在我的脚本中 用户仅输入 HH MM 并且数据库自动添加最后一个 SS 数字 问题是当我拉取时要编辑的值 它还添加了最后一个数字 这有点烦人 我可以用 PHP
  • mysql字符串转换返回0

    why select aaa 0返回 1 真 如果我有一张像这样的桌子 userid pass user1 pas1 如果我查询 select from table where userid 0 and pass 0 它给了我所有的行 My
  • MySQL 设置自动增量“Ad Hoc”

    有没有办法以 临时 方式将 mysql 的 auto increment 设置为某个整数 例如 表中已删除 N 个最新行 因此主键 auto increment 与实际行数相差 N 有没有办法将 auto increment 设置为正确的数
  • 如何确定选择哪个数据库

    有没有办法稍后输出当前选择的数据库的名称 只需使用 mysql query 或 mysqli query 甚至更好 或者最好使用 PDO SELECT DATABASE 附录 对于是否可以进行很多讨论FROM DUAL是否应包含在其中 在技
  • 使用 Laravel Eloquent 关系构建三元关系

    拥有三个实体 Project Employee 就业 问题描述 员工可以从事多个项目 每个项目都有一份工作 我想要访问所有项目以及您推荐的某个员工的就业情况 我不确定 但这种关系一定看起来像ternary 物理表尚未定义 因此 可以自由地设
  • 如何在不拉动所有对象的情况下编辑或添加到特定字段

    我怎样才能做到这一点 a myFavorits Add 而不将所有对象拉到 vara 因为a有很多数据 我不想全部拉出来a对象 但我找不到方法来做到这一点 我想做 lambda 和 linq 而不返回一些东西 但 linq 总是返回一些东西
  • 实体框架在判别器上做案例

    有没有办法将内部查询转换为子类 如果我只查询单个子类 我会这样做 auctions OfType
  • 如何用PHP显示分层的“NESTED SET”数据?

    我试图弄清楚如何使用 php 显示嵌套的 MySQL 数据 我已经设法搁置所有 叶节点 但后来我陷入困境 我需要显示一整棵树及其所有元素的关系 这是表格 category id name lft rgt 1 Saws 1 12 2 Chai
  • 编写 MySQL 查询以获得所需结果

    我正在使用 MySQL 数据库 风险因素有四种类型 严重 高 中 低 表包含如下数据 id uaid attribute value time risk factor 1 1234 Edge Exist 16123 NONE 2 1234
  • Sql查询增加多个项目的项目价值价格

    我想编写 Sql 查询来按百分比增加商品价格 场景是 在表中 我有 3 列 ID 商品名称 价格 Example If item Name is T shirt Increase price by 10 item Name is Jins
  • 数据库中无法识别的数据类型 nvarchar

    我尝试将 MySQL 服务器数据导入 PHPMyAdmin MySQL 数据库 无法识别的数据类型 nvarchar 发现 我的数据库排序规则设置为 utf general ci 您不必担心 nvarchar 消息 它是由 phpmyadm
  • MVC。网络错误:初始化字符串的格式不符合从索引 0 开始的规范

    我的连接字符串是
  • Django 在第二个数据库上调用存储过程

    我试图在多数据库 Django 安装上调用存储过程 但没有获得结果 存储过程 位于辅助数据库上 在 Django 中始终返回一个空数组 但在 mysql 客户端中执行时确实会出现预期结果 My view py文件 从 SomeDBModel
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo
  • 如何在数据库中存储世界各地的所有地理位置?

    我在一家旅游网站工作 我需要存储游客去过的旅游景点 我需要位置表中的地点是唯一的 以便我可以知道特定地点的受欢迎程度等 我还需要存储在我身边的所有国家 州 城市 因为我不能依赖用户输入 数据库是MySQL 看到这些位置的可用数据集 我发现存
  • 使用实体框架实现 if-not-exists-insert,无需竞争条件

    使用 LINQ to Entities 4 0 是否有正确的模式或构造来安全地实现 如果不存在则插入 例如 我目前有一个跟踪 用户收藏夹 的表 用户可以在其收藏夹列表中添加或删除文章 基础表不是真正的多对多关系 而是跟踪一些附加信息 例如添

随机推荐

  • FOSRestBundle:如何删除 {_format} 参数?

    我只需要支持单一 API 格式 即 JSON 并且我不喜欢在路由中使用 format 可以去掉吗 在您的 config yml 中 确保您已进行以下配置 fos rest format listener true routing loade
  • Flash CS4不肯放手

    我有一个Flash项目 它有很多源文件 我有一个使用率相当高的类 称之为 Jenine 我最近 也许是无情地 将 Jenine 从一个命名空间迁移到了另一个命名空间 我以为我们已经准备好了 我以为是时候了 新的 Jenine 在各方面都更好
  • JPA:两端都有列表,没有无限循环

    我正在尝试通过链接两个实体Set属性如 实体A Set
  • 寻找相当于机械化功能的请求

    我有兴趣看看 Requests 是否可以处理我主要在 Mechanize 中执行的一些任务 Mechanize 可以轻松处理填写表单和提交表单 但我很难在 Requests 中尝试做同样的事情 例如 import mechanize br
  • 有没有允许复制粘贴的 diff 工具

    是否有差异工具可以让您粘贴两段文本并获得差异 我无法使用在线工具 因为我正在处理专有数据 而且我还没有找到提供该功能的工具 Try WinMerge http winmerge org 它会做到这一点 Steps 下载并安装 winmerg
  • 将 +"" 添加到字符串会追加“0”

    由于偶然的打字错误 我遇到了一种我无法解释的行为 当我有 var text abc text the text变量突然变成abc0 有人可以对此提供任何见解吗 评估为数字0 这是因为为了应用一元加运算符 被强制为一个数字 与Number 这
  • PHP 类中的异常

    我正在为我的朋友编写一个 Web 应用程序 PHP 并决定使用我有限的 Java OOP 培训 我的问题是 在我的课程 应用程序中记录特定关键事情失败而不会真正破坏我的页面的最佳方式是什么 我的问题是我有一个对象 SummerCamper
  • 解析带有截断时区信息的 Java 日期

    考虑以下日期字符串 2012 10 01 01 02 03 004 0500 在 Java 中使用以下方式识别这一点SimpleDateFormat图案 yyyy MM dd HH mm ss SSSZ 但是 如果上面的时区信息被截断为 2
  • Azure blob 的阻止列表为空,但 blob 不为空!怎么会这样?

    这个问题简单来说就是 可以使用单个 PUT 请求创建块 blob 这将创建一个包含已提交内容的 blob 但该 blob不会有任何已提交的块 这意味着您不能假设提交的块的串联与提交的内容相同 使用块 blob 时 您必须特别注意具有空块列表
  • 如何 JSON 序列化集合? [复制]

    这个问题在这里已经有答案了 我有一个Pythonset包含对象 hash and eq 方法以确保集合中不包含重复项 我需要对这个结果进行 json 编码set 但即使传递一个空的set to the json dumps方法提出了一个Ty
  • 如何将 Vec 转换为 Vec? [复制]

    这个问题在这里已经有答案了 我已将文件读入无符号字节向量 let data fs read test bin expect Unable to read file 我怎样才能将这个向量转换 转换为Vec
  • 编译时弃用警告:零参数方法的 eta 扩展

    编译此代码片段时 scala 编译器会发出以下警告 不推荐使用零参数方法值的 eta 扩展 你是否 打算写Main this porFiles5 吗 警告 timerFunc porFiles5 当我将一个函数传递给另一个函数以进行简单的计
  • 使用 uwsgi-nginx-flask-docker 中的 Tesseract 4 - Docker 容器

    我的 python 项目在本地运行 并且它可以工作 我将 python 中的 tesseract 与 subprocess 包一起使用 然后我部署了我的项目 因为我使用 Flask 所以我安装了tiangolo uwsgi flask ng
  • Core Data 整数使用哪些整数类型

    Core Data 有 int16 int32 和 int64 当以 NSNumber 形式使用这些时 我应该使用 NSInteger 或 int 以及它们各自的 NSNumber 方法 numberWithInt numberWithIn
  • 在定义的时间间隔后自动刷新 ASP.NET 网页?

    在我的一个网站中 我需要实现15分钟后网页自动刷新 为此 我编写了以下代码行 但我面临一个问题 在 15 分钟的持续时间之后 页面将刷新为新页面加载 在我的页面上 我使用了包含城市列表的组合框 有时我从索引 3 处的列表中选择一个项目 之后
  • C# 中的属性

    我知道 C 以及一般的 NET 非常注重属性 然而 尽管我已经使用 C 编程多年 但我还没有发现自己曾经使用过它们 有人可以让我开始使用它们 并解释在哪里最好使用它们吗 Thanks From Pro C 2008 和 NET 3 5 平台
  • .net检测分布式事务

    在我的应用程序中 我使用以下模式来调用数据库 do a transaction using TransactionScope transaction new TransactionScope TransactionScopeOption R
  • Git-svn 克隆错误:“致命:不是有效的对象名称 'refs/remotes/tags/Tag With Spaces'”

    我在用着git svn clone git 版本 1 9 4 msysgit 0 将 Subversion 存储库迁移到 Git Subversion 存储库的标签中包含空格 这会导致fatal Not a valid object nam
  • Athena 在不同账户的表之间查询

    我可以使用两个不同的 IAM 角色单独访问两个不同的 Athena 表 因为每个角色位于不同的账户中 有没有办法运行从两者中提取的单个查询 即 INNER JOIN 在引擎盖下 Athena 表数据位于 S3 存储桶中 Athena 支持跨
  • 为什么 EF 为简单查询生成子查询?

    有一个简单的 Linq to EF var query from p in db Posts where p BlogtId blogId select p 它会生成以下形式的 SQL SELECT Extent1 PostId Exten