我正在 .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")].
预先感谢大家的帮助。