【问题标题】:Generated group by sql query does not make sense通过 sql 查询生成的 group 没有意义
【发布时间】:2020-01-06 01:37:29
【问题描述】:

我正在为 mysql 使用实体框架核心,并且我一直在运行一个复杂的 linq 查询,我正在尝试对其进行优化。 我打开了登录 mysql 服务器以查看来自 linq 查询的结果查询。 奇怪的是,这没有任何意义,因为我的复杂查询连接了 5 个表并执行多个 group by,where 和 order by 子句在日志中注册为 5 个单独的 select all columns from table statements。

所以,我为一个表尝试了一个简单的 group by 语句。生成的 sql 日志产生“Select all_columns from table_name order by groupbyid”。

谁能解释这里发生了什么?

提前致谢。

根据要求提供更多信息:

Sql查询:

var queryCommand = (from p in _context.TableExtract group p by p.tableExtractPersonId); queryCommand.ToList();

生成的mysql日志之后: SELECT .... [很长的列名列表] 发件人TableExtract 发件人p 订购者p.tableExtractPersonId

我尝试了两个不同的实体框架库:MySql.Data.EntityFrameworkCore(v8.0.17) 和 Pomelo.EntityFrameworkCore.MySql (v2.2.20),结果相同。我已经尝试过 .net core 3.0 并且也收到了相同的结果。接下来我将尝试 .net 标准。

【问题讨论】:

  • 您可以添加一个示例代码来说明您所做的事情吗?你的 linq 查询、表结构、实体?

标签: linq .net-core entity-framework-core


【解决方案1】:

好的。我找到了: var queryCommand = (from p in _context.TableExtract group p by p.tableExtractPersonIdinto g select g.Key)

强制 linq 作为 SQL 组进行评估。否则显然它与 group by 做自己的事情。

【讨论】:

    猜你喜欢
    • 2014-10-12
    • 2020-04-20
    • 2021-12-23
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2012-09-20
    相关资源
    最近更新 更多