2017-07-06 1 views
2

Ich bin ein Repository für Cosmos DB in. NET zu schaffen, und DRY zu sein und zu vermeiden, jede Klasse Eigenschaft mit [JsonProperty(PropertyName = "thePropertyName")] zu dekorieren, habe ich meine Klassen mit [JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))] dekoriert.Kosmos DB nicht respektieren Json.Net CamelCaseNamingStrategy in Abfrage

CreateDocumentAsync (zum Beispiel) korrekt serialisiert meine Cosmos DB-Dokumente in JSON, mit Kamel Fällen Namen der Eigenschaften. So weit, ist es gut.

Mein Problem ist jedoch, dass, wenn ich Cosmos DB über LINQ abfragen die SQL generiert COSMOS DB Abfrage nicht [JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))] Attribut dekorieren die Klasse, und daher keine Dokumente zurückgegeben werden. Dies liegt daran, dass bei Cosmos DB-Abfragen die Groß-/Kleinschreibung in Bezug auf Feld-/Eigenschaftsnamen beachtet wird. Zum Beispiel (man beachte den Fall Unterschied auf Name) folgende Ausbeute unterschiedliche Ergebnisse:

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

gegen

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

ich dies durch CreateDocumentQuery erzeugt durch Überprüfen der SQL-Abfrage bestätigt haben, und haben gesucht Optionen, die es mir erlauben, die Umhüllung von Eigentumsnamen in SqlQuerySpec mit keinem Erfolg anzuzeigen.

Also, meine Frage ist: Weiß jemand, wie man eine LINQ-Abfrage in Cosmos Db verwenden Sie die Klasse definiert Camel Casing-Strategie und nicht jede Eigenschaft manuell über [JsonProperty(PropertyName = "thePropertyName")] setzen müssen.

Vielen Dank im Voraus für jede Hilfe.

+0

Brian, Danke für die Formatierung. Meine erste Frage und komplett vergessen zu formatieren. Werde versuchen, in Zukunft zu vermeiden. – DJB

Antwort

1

Momentan nicht möglich. Siehe https://stackoverflow.com/a/37490316/37421

Ich finde Einstellung über die Eigenschaft ziemlich riskant, und ein Bugfest.

+0

Danke für die schnelle Antwort. Ich stimme Ihrer Ansicht zu, dass dies Potenzial für Fehler hat, und es ist auch langweilig. Ich warte geduldig auf das Cosmos DB Team, um es gemäß ihrer Straßenkarte anzusprechen. – DJB