Бөлісу құралы:


Создание элемента в Azure Cosmos DB для таблицы с помощью .NET

Область применения: Таблица

Каждый элемент в Azure Cosmos DB представляет определенную сущность, хранящуюся в таблице. В API для таблицы элемент состоит из набора пар "ключ-значение", однозначно определяемых составом строк и ключей секций.

Создание уникального идентификатора для элемента

Уникальный идентификатор, программно известный как **** — это уникальная строка, которая определяет некоторый элемент в таблице. Каждый элемент также содержит значение ключа секции, которое используется для определения логической секции этого элемента. При создании нового элемента в таблице требуются оба этих ключа.

В области одной таблицы два элемента не могут иметь одинаковые значения ключа строки и ключа секции.

Создание элемента

Класс TableEntity является универсальной реализацией словаря, который создан специально для того, чтобы упростить создание нового элемента из произвольного словаря с парами "ключ — значение".

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

Использование встроенного класса

Конструктор (string rowKey, string partitionKey) для класса TableEntity позволяет быстро создать элемент с ограниченным набором обязательных свойств. После создания элемента примените метод Add для добавления в него дополнительных пар "ключ — значение".

Например, можно создать новый экземпляр класса TableEntity, сначала указав в конструкторе ключи строки и секции, а затем добавив в словарь новые пары "ключ — значение":

// Create new item using composite key constructor
TableEntity item1 = new(
    rowKey: "68719518388",
    partitionKey: "gear-surf-surfboards"
);

// Add properties to item
item1.Add("Name", "Sunnox Surfboard");
item1.Add("Quantity", 8);
item1.Add("Sale", true);

// Add new item to server-side table
await tableClient.AddEntityAsync<TableEntity>(item1);

Конструктор (IDictionary<string, object>) класса TableEntity преобразует существующий словарь в элемент, готовый к добавлению в таблицу.

Например, можно передать словарь в новый экземпляр класса TableEntity:

// Create dictionary
Dictionary<string, object> properties = new()
{
    { "RowKey", "68719518388" },
    { "PartitionKey", "gear-surf-surfboards" },
    { "Name", "Sunnox Surfboard" },
    { "Quantity", 8 },
    { "Sale", true }
};

// Create new item using dictionary constructor
TableEntity item2 = new(
    values: properties
);

// Add new item to server-side table
await tableClient.AddEntityAsync<TableEntity>(item2);

Метод TableClient.AddEntityAsync<> принимает параметр типа TableEntity и создает в таблице серверный элемент.

Реализация интерфейса

Примечание.

В примерах в этом разделе предполагается, что вы уже определили тип C# для представления ваших данных с именем Product.

// C# record type for items in the table
public record Product : ITableEntity
{
    public string RowKey { get; set; } = default!;

    public string PartitionKey { get; set; } = default!;

    public string Name { get; init; } = default!;

    public int Quantity { get; init; }

    public bool Sale { get; init; }

    public ETag ETag { get; set; } = default!;

    public DateTimeOffset? Timestamp { get; set; } = default!;
}

Метод TableClient.AddEntityAsync<> принимает параметр любого типа, в котором реализован интерфейс ITableEntity. Этот интерфейс уже содержит обязательные свойства RowKey и PartitionKey.

Например, вы можете создать новый объект, который реализует по меньшей мере все обязательные свойства в интерфейсе ITableEntity:

// Create new item
Product item = new()
{
    RowKey = "68719518388",
    PartitionKey = "gear-surf-surfboards",
    Name = "Sunnox Surfboard",
    Quantity = 8,
    Sale = true
};

Затем этот объект можно передать в метод AddEntityAsync <>, который создает серверный элемент:

// Add new item to server-side table
await tableClient.AddEntityAsync<Product>(item);

Следующие шаги

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