Создание элемента в Azure Cosmos DB для NoSQL с помощью .NET
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
Элементы в Azure Cosmos DB представляют определенную сущность, хранящуюся в контейнере. В API для NoSQL элемент состоит из отформатированных в формате JSON данных с уникальным идентификатором.
Создание уникального идентификатора для элемента
Уникальный идентификатор — это отдельная строка, которая идентифицирует элемент в контейнере. Свойство id
является единственным обязательным свойством при создании нового документа JSON. Например, этот документ JSON является допустимым элементом в Azure Cosmos DB.
{
"id": "unique-string-2309509"
}
В области контейнера два элемента не могут совместно использовать один и тот же уникальный идентификатор.
Внимание
В свойстве id
учитывается регистр. Свойства с именем ID
, Id
, iD
и _id
будут рассматриваться как произвольное свойство JSON.
После создания URI для элемента будет имеет следующий формат.
https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>/docs/<item-resource-identifier>
При создании ссылки на элемент с использованием URI используйте системный идентификатор ресурса вместо поля id
. Дополнительные сведения о свойствах элементов, созданных системой в Azure Cosmos DB для NoSQL, см . в свойствах элемента.
Создание элемента
Примечание.
В примерах в этой статье предполагается, что вы уже определили тип C# для представления ваших данных с именем Product.
// C# record type for items in the container
public record Product(
string id,
string category,
string name,
int quantity,
bool sale
);
В примерах также предполагается, что вы уже создали новый объект типа Product с именем newItem.
// Create new item and add to container
Product item = new(
id: "68719518388",
category: "gear-surf-surfboards",
name: "Sunnox Surfboard",
quantity: 8,
sale: true
);
Для создания элемента вызовите один из следующих методов:
Создание элемента асинхронно
В примере ниже показано, как создать новый элемент асинхронно.
Product createdItem = await container.CreateItemAsync<Product>(
item: item,
partitionKey: new PartitionKey("gear-surf-surfboards")
);
Метод Container.CreateItemAsync<>
выдаст исключение, если возникнет конфликт с уникальным идентификатором существующего элемента. Дополнительные сведения о возможных исключениях см. в разделе Исключения CreateItemAsync<>
.
Замена элемента асинхронно
В примере ниже показано, как заменить существующий элемент асинхронно.
Product replacedItem = await container.ReplaceItemAsync<Product>(
item: item,
id: "68719518388",
partitionKey: new PartitionKey("gear-surf-surfboards")
);
Метод Container.ReplaceItemAsync<>
требует, чтобы предоставленная строка для параметра id
соответствовала уникальному идентификатору параметра item
.
Создание или замена элемента асинхронно
В следующем примере показано, как создать новый элемент или заменить существующий, если элемент уже существует с таким же уникальным идентификатором.
Product upsertedItem = await container.UpsertItemAsync<Product>(
item: item,
partitionKey: new PartitionKey("gear-surf-surfboards")
);
Метод Container.UpsertItemAsync<>
будет использовать уникальный идентификатор параметра item
, чтобы определить, есть ли конфликт с существующим элементом, и соответствующим образом заменить элемент.
Следующие шаги
Теперь, когда вы создали разные элементы, используйте следующее руководство, чтобы выполнить чтение элемента.