【发布时间】: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