小编DJB*_*DJB的帖子

Cosmos DB 在查询中不尊重 Json.Net CamelCaseNamingStrategy

我正在 .Net 中为 Cosmos DB 创建一个存储库,为了保持 DRY 并避免用 装饰每个类属性[JsonProperty(PropertyName = "thePropertyName")],我用 .Net 装饰了我的类 [JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]

CreateDocumentAsync(例如)使用属性的驼峰式大小写名称正确序列化 JSON 格式的 Cosmos DB 文档。到目前为止,一切都很好。

然而,我的问题是,当我通过 LINQ 查询 Cosmos DB 时,它生成的用于查询 COSMOS DB 的 SQL 不尊重[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]装饰类的属性,因此不会返回任何文档。这是因为 Cosmos DB 查询对于字段/属性名称区分大小写。例如,以下命令会产生不同的结果(请注意名称的大小写差异):

SELECT * FROM c WHERE c.name = "Health"
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM c WHERE c.Name = "Health" 
Run Code Online (Sandbox Code Playgroud)

我通过检查 生成的查询 SQL 确认了这一点CreateDocumentQuery,并寻找了可以允许我指示属性名称大小写的选项,但SqlQuerySpec没有成功。

所以,我的问题是:有谁知道如何在 Cosmos Db 中使用类定义的驼峰式大小写策略进行 LINQ 查询,而不必通过[JsonProperty(PropertyName = "thePropertyName")].

预先感谢大家的帮助。

c# linq json json.net azure-cosmosdb

6
推荐指数
1
解决办法
2217
查看次数

标签 统计

azure-cosmosdb ×1

c# ×1

json ×1

json.net ×1

linq ×1