次の方法で共有


.NET を使用して Azure Cosmos DB for NoSQL にコンテナーを作成する

適用対象: NoSQL

Azure Cosmos DB のコンテナーは、項目のセットを格納します。 アイテムを作成、クエリ、または管理するには、まずコンテナーを作成する必要があります。

コンテナーの名前を指定する

Azure Cosmos DB では、コンテナーはリレーショナル データベース内のテーブルに似ています。 コンテナーを作成すると、コンテナー名によって、コンテナー リソースと子項目へのアクセスに使用される URI のセグメントが形成されます。

コンテナーに名前を付ける場合の簡単な規則を次に示します。

  • コンテナー名を空にしてはなりません。
  • コンテナー名を 256 文字より長くすることはできません。

作成されると、コンテナーの URI の形式は次のとおりです。

https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>/colls/<container-name>

ヒント

コンテナー名の制限について詳しくは、「サービスのクォータと制限」を参照してください。

コンテナーを作成する

コンテナーを作成するには、次のいずれかのメソッドを呼び出します。

コンテナーを非同期的に作成する

次の例では、コンテナーが非同期的に作成されます。

// New instance of Container class referencing the server-side container
Container container1 = await database.CreateContainerAsync(
    id: "products-1",
    partitionKeyPath: "/category",
    throughput: 400
);

Database.CreateContainerAsync メソッドは、同じ名前のデータベースが既に存在する場合、例外をスローします。

コンテナがまだ存在しない場合は、非同期で作成します

次の例では、コンテナーがアカウントにまだ存在しない場合にのみ、非同期的にコンテナーを作成します。

// New instance of Container class referencing the server-side container
Container container2 = await database.CreateContainerIfNotExistsAsync(
    id: "products-2",
    partitionKeyPath: "/category",
    throughput: 400
);

Database.CreateContainerIfNotExistsAsync メソッドは、まだ存在しない場合にのみ、新しいコンテナーを作成します。 このメソッドは、同じコードを複数回実行する場合にエラーを回避するのに役立ちます。

応答の解析

これまでのすべての例では、非同期要求からの応答はすぐに Container 型にキャストされました。 ヘッダーや HTTP 状態コードを含む応答に関するメタデータを解析することもできます。 Database.CreateContainerAsync メソッドと Database.CreateContainerIfNotExistsAsync メソッドの真の戻り値の型は次ContainerResponseのとおりです。

次の例は、ContainerResponse を返す Database.CreateContainerIfNotExistsAsync メソッドを示しています。 返されたら、応答プロパティを解析し、最終的に基になる Container オブジェクトを取得できます。

// New instance of Container class referencing the server-side container
ContainerResponse response = await database.CreateContainerIfNotExistsAsync(
    id: "products-3",
    partitionKeyPath: "/category",
    throughput: 400
);
// Parse additional response properties
Container container3 = response.Container;

次のステップ

コンテナーを作成したので、次のガイドを使用し項目を作成します。