Чтение элемента в Azure Cosmos DB для таблицы с помощью .NET
Область применения: Таблица
Каждый элемент в Azure Cosmos DB представляет определенную сущность, хранящуюся в таблице. В API для таблицы элемент состоит из набора пар "ключ-значение", однозначно определяемых составом строк и ключей секций.
Чтение элементов с помощью составного ключа
Каждый элемент в Azure Cosmos DB для таблицы имеет уникальный идентификатор, указанный составом ключей строк и секций . Эти составные ключи хранятся в виде свойств RowKey
и PartitionKey
, соответственно. В области таблицы не может существовать двух элементов с одинаковым составным уникальным идентификатором.
Для выполнения операции чтения такого элемента базе данных Azure Cosmos DB нужны оба уникальных идентификатора и значение ключа секции элемента. В частности, предоставление составного ключа позволяет быстро выполнять чтение соответствующего элемента с прогнозируемой стоимостью в единицах запроса (ЕЗ).
Чтение элемента
Чтобы выполнить для элемента операцию точечного чтения, используйте одну из следующих стратегий.
- Возвращайте объект
TableEntity
с помощьюGetEntityAsync<>
- Возвращайте объект собственного типа с помощью
GetEntityAsync<>
Чтение элемента с помощью встроенного класса
В следующем примере операция точечного чтения асинхронно извлекает один элемент и возвращает результаты, десериализованные в словарь, используя встроенный тип 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.