Создание контейнера в Azure Cosmos DB для NoSQL с помощью .NET

ОБЛАСТЬ ПРИМЕНЕНИЯ: 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.

В следующем примере показан метод Database.CreateContainerIfNotExistsAsync, возвращающий ContainerResponse. После возврата можно проанализировать свойства ответа, а затем получить базовый объект 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;

Дальнейшие действия

Теперь, когда вы создали контейнер, используйте следующее руководство для создания элементов.