2017-07-06 21 views
2

私は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")]を介してそれぞれのプロパティを手動で設定する必要はありません。

ご協力いただきありがとうございます。

+0

ブライアン、フォーマットをありがとう。私の最初の質問と完全にフォーマットすることを忘れてしまった。将来避けようとします。 – DJB

答えて

1

現在のところできません。 https://stackoverflow.com/a/37490316/37421

私はプロパティを介してそれを設定することは非常に危険であり、bugfestを見つけることがわかります。

+0

迅速な対応に感謝します。これはバグの可能性があると私はあなたの意見に同意し、それはまた退屈です。私はCosmos DBチームがロードマップに従ってそれに対処することを忍耐強く待つでしょう。 – DJB

関連する問題