Documentdb-sql-linq-to-sql-translation
提供:Dev Guides
DocumentDB SQL-LinqからSQLへの翻訳
DocumentDBでは、実際にSQLを使用してドキュメントを照会します。 .NET開発を行っている場合は、使用でき、LINQクエリから適切なSQLを生成できるLINQプロバイダーもあります。
サポートされているデータ型
DocumentDBでは、すべてのJSONプリミティブ型は、DocumentDB .NET SDKに含まれるLINQプロバイダーでサポートされています。
- 数値
- ブール値
- ひも
- Null
サポートされている式
次のスカラー式は、DocumentDB .NET SDKに含まれているLINQプロバイダーでサポートされています。
- 定数値-プリミティブデータ型の定数値を含みます。
- プロパティ/配列インデックス式-式は、オブジェクトまたは配列要素のプロパティを参照します。
- 算術式-数値およびブール値に関する一般的な算術式が含まれます。
- 文字列比較式-文字列値と一定の文字列値の比較が含まれます。
- オブジェクト/配列作成式-複合値型または匿名型のオブジェクト、またはそのようなオブジェクトの配列を返します。 これらの値はネストできます。
サポートされているLINQオペレーター
これは、DocumentDB .NET SDKに含まれているLINQプロバイダーでサポートされているLINQオペレーターのリストです。
- 選択-投影は、オブジェクト構築を含むSQL SELECTに変換されます。
- Where -フィルタはSQL WHEREに変換され、&&、||間の変換をサポートします。そして! SQLオペレーターに。
- SelectMany -SQL JOIN句への配列の巻き戻しを許可します。 式をチェーン/ネストして、配列要素をフィルタリングするために使用できます。
- OrderByおよびOrderByDescending -ORDER BYの昇順/降順に変換します。
- CompareTo -範囲比較に変換します。 .NETでは比較できないため、一般的に文字列に使用されます。
- Take -クエリの結果を制限するためにSQL TOPに変換します。
- * Math関数*-.NETのAbs、Acos、Asin、Atan、Ceiling、Cos、Exp、Floor、Log、Log10、Pow、Round、Sign、Sin、Sqrt、Tan、Truncateから同等のSQLビルトインへの変換をサポート関数。
- 文字列関数-.NETのConcat、Contains、EndsWith、IndexOf、Count、ToLower、TrimStart、Replace、Reverse、TrimEnd、StartsWith、SubString、ToUpperから同等のSQL組み込み関数への変換をサポートします。
- 配列関数-.NETのConcat、Contains、Countから同等のSQL組み込み関数への変換をサポートします。
- 地理空間拡張関数-スタブメソッドDistance、Within、IsValid、およびIsValidDetailedから同等のSQL組み込み関数への変換をサポートします。
- User-Defined Extension Function -スタブメソッドUserDefinedFunctionProvider.Invokeから対応するユーザー定義関数への変換をサポートします。
- その他-合体演算子と条件演算子の翻訳をサポートします。 コンテキストに応じて、ContainsをString CONTAINS、ARRAY_CONTAINS、またはSQL INに変換できます。
新規顧客1
Net SDKを使用する例を見てみましょう。 以下は、この例で検討する3つのドキュメントです。.
新規顧客2
新規顧客3
以下は、LINQを使用してクエリを実行するコードです。 q でLINQクエリを定義しましたが、.ToListを実行するまで実行されません。
SDKは、LINQクエリをDocumentDBのSQL構文に変換し、LINQ構文に基づいてSELECT句とWHERE句を生成します。
CreateDocumentClientタスクから上記のクエリを呼び出しましょう。
上記のコードが実行されると、次の出力が生成されます。