我正在.Net中为Cosmos DB创建一个存储库,并且要干掉并避免用[JsonProperty(PropertyName = "thePropertyName")]
装饰每个类属性,我用[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
装饰了我的类。
CreateDocumentAsync
(例如)使用属性的驼峰案例名称正确地序列化我的JSON中的Cosmos DB文档。到目前为止一切都很好。
我的问题是,当我通过LINQ查询Cosmos DB时,它生成的SQL查询COSMOS DB不尊重装饰类的[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
属性,因此不返回任何文档。这是因为Cosmos DB查询对字段/属性名称区分大小写。例如,以下产生不同的结果(注意名称上的大小写差异):
SELECT * FROM c WHERE c.name = "Health"
VS
SELECT * FROM c WHERE c.Name = "Health"
我已通过检查CreateDocumentQuery
生成的查询SQL来确认这一点,并查找了可能允许我在SqlQuerySpec
中指明属性名称大小的选项,但没有成功。
所以,我的问题是:有没有人知道如何在Cosmos Db中使用LINQ查询使用类定义的驼峰套管策略,而不必通过[JsonProperty(PropertyName = "thePropertyName")]
手动设置每个属性。
提前感谢大家的帮助。