2017-07-06 168 views
2

我正在为.Net中的宇宙数据库创建一个存储库,并且要干,并且避免用[JsonProperty(PropertyName = "thePropertyName")]装饰每个类属性,我已用[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]装饰了我的类。宇宙数据库不尊重Json.Net CamelCaseNamingStrategy在查询

CreateDocumentAsync(例如)使用属性的驼峰大小写名称正确地序列化JSON中的我的Cosmos数据库文档。到现在为止还挺好。

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

SELECT * FROM c WHERE c.name = "Health" 

SELECT * FROM c WHERE c.Name = "Health" 

我已经通过检查CreateDocumentQuery生成的查询SQL证实了这一点,并一直在寻求这些选项可能允许我在SqlQuerySpec中指示财产名称的套管,但没有成功。

所以,我的问题是:有谁知道如何在Cosmos Db中使用类定义驼峰套管策略的LINQ查询,而不必通过[JsonProperty(PropertyName = "thePropertyName")]手动设置每个属性。

非常感谢大家的帮助。

+0

Brian,感谢您的格式化。我的第一个问题,完全忘了格式。将尽量避免在未来。 – DJB

回答

1

目前不可能。见https://stackoverflow.com/a/37490316/37421

我发现它设置它通过属性相当危险,并bugfest。

+0

感谢您的快速响应。我同意你的看法,认为这有潜在的错误,而且也很乏味。我会耐心等待Cosmos DB团队按照他们的路线图解决问题。 – DJB