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.
Brian, Danke für die Formatierung. Meine erste Frage und komplett vergessen zu formatieren. Werde versuchen, in Zukunft zu vermeiden. – DJB