【问题标题】:CosmosQueryableExtensions.FromSqlRaw generates undesired sub queryCosmosQueryableExtensions.FromSqlRaw 生成不需要的子查询
【发布时间】:2022-12-28 21:05:33
【问题描述】:

我有一个场景,我需要创建针对 CosmosDb 的原始查询。为了这个问题,我有一个简化的调用:

CosmosQueryableExtensions.FromSqlRaw(db.ProjectFolders, "SELECT VALUE c FROM c WHERE c.Site = \"mysite\"")

但它会生成带有不需要的子查询的查询:

info: Microsoft.EntityFrameworkCore.Database.Command[30102]
      Executed ReadNext (784.3342 ms, 2.85 RU) ActivityId='3f8b0dfd-09f5-4fd3-99e3-3bae8edbe06e', Container='Items', Partition='?', Parameters=[]
      SELECT c
      FROM (
          SELECT VALUE c FROM c WHERE c.Site = "mysite"
      ) c

这是设计使然,无关紧要,还是我做错了什么?

【问题讨论】:

  • 这是设计使然。如果你输入 SELECT * FROM ...,EF Core 不会解析 SQL,它会将你的查询放在子查询中,并以可以简化对象实现的方式指定所有需要的字段及其顺序。

标签: entity-framework-core azure-cosmosdb


【解决方案1】:

解释:-FromSQLRow 使用子查询及其设计生成查询。

使用 LINQ 组合查询,EF Core 会将传递的 LINQ SQL 查询视为对数据库的子查询。在 LINQ 中组合 SQL 查询以 SELECT 开头,但不能具有类似 SQL 的功能,例如

  • 尾随分号 (;)
  • ORDER BY条款

参考 :-

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    相关资源
    最近更新 更多