私はCosmos DB用のリポジトリを.Netで作成していますが、DRYになり、[JsonProperty(PropertyName = "thePropertyName")]
で各クラスのプロパティを飾るのを避けるため、[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
でクラスをデコレートしました。Cosmos DBがJson.Netを尊重していない問い合わせのCamelCaseNamingStrategy
CreateDocumentAsync
(例えば)は、プロパティのキャメルケース名を使用してJSONでCosmos DBドキュメントを正しくシリアル化します。ここまでは順調ですね。
私の問題は、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")]
を介してそれぞれのプロパティを手動で設定する必要はありません。
ご協力いただきありがとうございます。
ブライアン、フォーマットをありがとう。私の最初の質問と完全にフォーマットすることを忘れてしまった。将来避けようとします。 – DJB