使用 .NET 读取 Azure Cosmos DB for Table 中的项

适用对象:

Azure Cosmos DB 中的项表示存储在表中的特定实体。 在 API for Table 中,项由一组键值对组成,这些键值对由行键和分区键的组合唯一标识。

使用组合键读取项

Azure Cosmos DB for Table 中的每个项都具有由行键和分区键的组合指定的唯一标识符。 这些组合键分别存储为 RowKey 属性和 PartitionKey 属性。 在表范围内,两个项不能共享同一个唯一标识符组合。

Azure Cosmos DB 需要项的唯一标识符和分区键值来执行该项的读取。 具体而言,提供组合键将对该项执行快速点读取,其预计成本以请求单位 (RU) 为单位。

读取项

若要对项执行点读取,请使用以下策略之一:

使用内置类读取项

以下示例点异步读取单个项,并使用内置 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 for Table 数据的教程之一。