Поделиться через


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

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

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

Чтение элементов с помощью составного ключа

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

Для выполнения операции чтения такого элемента базе данных Azure Cosmos DB нужны оба уникальных идентификатора и значение ключа секции элемента. В частности, предоставление составного ключа позволяет быстро выполнять чтение соответствующего элемента с прогнозируемой стоимостью в единицах запроса (ЕЗ).

Чтение элемента

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

Чтение элемента с помощью встроенного класса

В следующем примере операция точечного чтения асинхронно извлекает один элемент и возвращает результаты, десериализованные в словарь, используя встроенный тип TableEntity:

// Read existing item from server-side table
TableEntity readItem = await tableClient.GetEntityAsync<TableEntity>(
    partitionKey: "68719518388",
    rowKey: "gear-surf-surfboards"
);

Метод TableClient.GetEntityAsync<TableEntity> считывает элемент и возвращает объект типа Response<TableEntity>. Тип Response<> содержит оператор неявного преобразования для приведения объекта к типу объекта **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!;
}

В следующем примере точка асинхронно считывает один элемент и возвращает десериализованный элемент с помощью предоставленного универсального типа:

// Read existing item from server-side table
Product readItem = await tableClient.GetEntityAsync<Product>(
    partitionKey: "68719518388",
    rowKey: "gear-surf-surfboards"
);

Внимание

Универсальный тип, используемый с методом TableClient.GetEntityAsync<>, должен реализовывать интерфейс ITableEntity.

Метод TableClient.GetEntityAsync<> считывает элемент и возвращает объект типа Response<>. Тип Response<> содержит неявный оператор преобразования для приведения объекта к универсальному типу. Дополнительные сведения о неявных операторах см. в статье Операторы пользовательского преобразования.

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

Теперь, когда вы прочитали различные элементы, воспользуйтесь одним из наших руководств по запросу к данным таблицы Azure Cosmos DB.